解释代码

Click_Me 2009-06-18 10:05:00

<script type="text/JavaScript">
document.write('<div id="picrun" style="height:68px;overflow:hidden;width:290px;font-size:0">');
document.write('<span style="height:68px;overflow:hidden;width:290px;"><a id="img1" href="@[ad_link1]"><img src="http://i1.6.cn/7a/60/h450081244163854.jpg" border="0px" width="290px" height="68px"/></a></span>');
document.write('<span style="height:68px;overflow:hidden;width:290px;"><a id="img" href="@[ad_link2]"><img src="http://i2.6.cn/a5/e5/n948391244539267.jpg" border="0px" width="290px" height="68px"/></a></span>');
document.write('<span style="height:68px;overflow:hidden;width:290px;"><a id="img3" href="@[ad_link3]"><img src="http://i3.6.cn/f9/8a/k837331244192528.jpg" border="0px" width="290px" height="68px"/></a></span>');
document.write('</div>')

var oMarquee = document.getElementById("picrun"); //滚动对象
var iLineHeight = 68; //单行高度,像素
var iLineCount = 3; //实际行数
var index=0;
function run() {
oMarquee.scrollTop += Math.ceil(((index+1)*iLineHeight-oMarquee.scrollTop)*0.2);
if ( oMarquee.scrollTop == iLineCount * iLineHeight ){
oMarquee.scrollTop = index = 0;
}
var speed = 0;
if ( oMarquee.scrollTop % iLineHeight == 0 ) {
speed=1000;if(oMarquee.scrollTop!=0)index++;
}
window.setTimeout( "run()", speed);
}
oMarquee.innerHTML += oMarquee.innerHTML;
window.setTimeout( "run()", 1000 );
</script>

就十几行代码 希望大伙能给我解释清楚些,这个无缝滚动的原理 以及
oMarquee.scrollTop += Math.ceil(((index+1)*iLineHeight-oMarquee.scrollTop)*0.2);
的含义 越清楚越好 谢谢了
...全文
42 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Click_Me 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xfsnero 的回复:]
将oMarquee里的内容变成2份
[/Quote]

有什么好处?
monexus 2009-06-18
  • 打赏
  • 举报
回复
将oMarquee里的内容变成2份
Click_Me 2009-06-18
  • 打赏
  • 举报
回复
现在希望大伙解释下
oMarquee.innerHTML += oMarquee.innerHTML;

的目的是什么?
shenzhenNBA 2009-06-18
  • 打赏
  • 举报
回复

就十几行代码 希望大伙能给我解释清楚些,这个无缝滚动的原理 以及
oMarquee.scrollTop += Math.ceil(((index+1)*iLineHeight-oMarquee.scrollTop)*0.2);
的含义

就是改变对象的scrollTop属性值,实现滚动,滚动量为的行数乘以每行的高度减去被卷去的高度,再乘以修正系数,再取整
wuwu8ku 2009-06-18
  • 打赏
  • 举报
回复
oMarquee实际长度是68*3,但是如果不加oMarquee.scrollTop的话oMarquee.scrollTop是不可能到68*3这个距离的
wuwu8ku 2009-06-18
  • 打赏
  • 举报
回复
你把<div id="picrun" style="height:68px;overflow:hidden;width:290px;font-size:0">里的overflow:hidden改成overflow:scroll就知道作用了
Click_Me 2009-06-18
  • 打赏
  • 举报
回复
谢谢楼上的 但oMarquee.innerHTML += oMarquee.innerHTML;
作用是啥
mingday 2009-06-18
  • 打赏
  • 举报
回复
这个有点类似“滑动窗口的意思。显示区只有68px的调试,实现显示的div是68*index(上例是3),这样每次只显示其中一个图,即68的部分。所以上面边代码是通过“坐标”调整显示部分,即scrolltop的值来移动(上移)


oMarquee.scrollTop += Math.ceil(((index+1)*iLineHeight-oMarquee.scrollTop)*0.2);
这行代码就是计算位置的,最后的0.2是个参数,如果为1,就直接切换,小于1就会有“慢慢”移上去的效果了。
mingday 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Click_Me 的回复:]
引用 7 楼 xfsnero 的回复:
将oMarquee里的内容变成2份



有什么好处?
[/Quote]

首尾相连

87,916

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧