求助JS无缝滚动的问题:

<script>
window.onload=function ()
{
var oDiv=document.getElementById('div1');
var oUl=oDiv.getElementsByTagName('ul')[0];
var aLi=oUl.getElementsByTagName('li');

oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
oUl.style.width=aLi[0].offsetWidth*aLi.length+'px';

function move(){
if(oUl.offsetLeft<-oUl.offsetWidth/2)
{
oUl.style.left='0';
}
if(oUl.offsetLeft>0)
{
oUl.style.left=-oUl.offsetWidth/2+'px';
}
oUl.style.left=oUl.offsetLeft+2+'px';
}
var timer=setInterval(move, 30);

oDiv.onmouseover=function ()
{
clearInterval(timer);
};

oDiv.onmouseout=function ()
{
timer=setInterval(move, 30);
};
};
</script>
问题:if(oUl.offsetLeft<-oUl.offsetWidth/2)
{oUl.style.left='0';
这里的oUl.offsetWidth/2 为什么是可视区域的一半时重新开始
而不是当offsetLeft是oUl.style.width一半时 重新开始

oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;

这句话是是将ul复制一份。那么现在ul的宽度就是原来宽度的一倍。
所以这里是ul宽度的一半。
温馨提示:答案为网友推荐,仅供参考
相似回答