在处理滚动字幕无缝连接的问题时,看到一种处理方法,不能很好的理解。下面是全部的脚本代码:
function startmarquee(lh,speed,delay,index){
var t;
var p=false; 
var o=document.getElementById("marqueebox"+index);
o.innerHTML+=o.innerHTML;   
o.onmouseover=function(){p=true}
o.onmouseout=function(){p=false} 
o.scrollTop = 0;
function start(){
t=setInterval(scrolling,speed);
if(!p){ o.scrollTop += 1;} 

function scrolling(){ 
if(o.scrollTop%lh!=0){
o.scrollTop += 1; 
if(o.scrollTop>=o.scrollHeight/2) o.scrollTop = 0;
}else{ 
clearInterval(t);
setTimeout(start,delay); 
}
}
setTimeout(start,delay);
}
startmarquee(25,30,3000,0);
startmarquee(25,40,0,1);
HTML部分代码如下:
<div class="box" id="marqueebox0">
<ul>
     <li style="background:#f8e2ac;">第一行</li>
        <li style="background:#f5f5f5;">第二行</li>
        <li style="background:#ffe6ec;">第三行</li>
    </ul>
</div><br />
<div class="box" id="marqueebox1">
<ul>
     <li style="background:#f8e2ac;">第一行</li>
        <li style="background:#f5f5f5;">第二行</li>
        <li style="background:#ffe6ec;">第三行</li>
    </ul>
</div>
求高人讲解一下,脚本部分的代码是什么意思

解决方案 »

  1.   

    startmarquee() 方法中 主要明白 scrollTop  setInterval  setTimeout clearInterval
      

  2.   

    嗯 能解释下scrollTop 和 clearInterval 么
      

  3.   

    老乡,你可以看看api上面的解释啊;
    http://topic.csdn.net/u/20100713/23/142916fd-d41b-4890-8299-ad290740e046.html
    这个帖子有下载chm文档的地址
    scrollTop 是可把内容滚动到指定的坐标。
    clearInterval 清除setInterval的值。停止setInterval它的运行
      

  4.   

    可能是我问得太泛了吧 问几个要点地方
    function startmarquee(lh,speed,delay,index){
    var t;
    var p=false;  
    var o=document.getElementById("marqueebox"+index);
    o.innerHTML+=o.innerHTML;  //这句代码是做什么用? 
    o.onmouseover=function(){p=true}
    o.onmouseout=function(){p=false}  //这两句代码有什么用?[/color]
    o.scrollTop = 0;
    function start(){
    t=setInterval(scrolling,speed);
    if(!p){ o.scrollTop += 1;}  
    }  
    function scrolling(){  
    if(o.scrollTop%lh!=0){
    o.scrollTop += 1;  
    if(o.scrollTop>=o.scrollHeight/2) o.scrollTop = 0;
    }else{  
    clearInterval(t);
    setTimeout(start,delay);  
    }
    }
    setTimeout(start,delay);
    }
      

  5.   

    可能是我问得太泛了吧 问几个要点地方
    function startmarquee(lh,speed,delay,index){
    var t;
    var p=false;   
    var o=document.getElementById("marqueebox"+index);
    o.innerHTML+=o.innerHTML; //这句代码是做什么用? 
    o.onmouseover=function(){p=true}
    o.onmouseout=function(){p=false} //这两句代码有什么用?
    o.scrollTop = 0;
    function start(){
    t=setInterval(scrolling,speed);
    if(!p){ o.scrollTop += 1;}   
    }   
    function scrolling(){   
    if(o.scrollTop%lh!=0){
    o.scrollTop += 1;   
    if(o.scrollTop>=o.scrollHeight/2) o.scrollTop = 0;
    }else{   
    clearInterval(t);
    setTimeout(start,delay);   
    }
    }
    setTimeout(start,delay);
    }
      

  6.   

    沉了 沉了 
    还能自己顶最后一次
    没人解答就彻底沉了 ( ⊙ o ⊙ )~~
    function startmarquee(lh,speed,delay,index){
    var t;
    var p=false;   
    var o=document.getElementById("marqueebox"+index);
    o.innerHTML+=o.innerHTML; //这句代码是做什么用?  
    o.onmouseover=function(){p=true}
    o.onmouseout=function(){p=false} //这两句代码有什么用?
    o.scrollTop = 0;
    function start(){
    t=setInterval(scrolling,speed);
    if(!p){ o.scrollTop += 1;}   
    }
      

  7.   

    这个应该是文字向下滚动的吧!! o.innerHTML+=o.innerHTML   等于  o.innerHTML=o.innerHTML+o.innerHTML  就是复制一个HTML在下面o.onmouseout=function(){p=false} 鼠标滑出时间, p是布尔量, 你下面有个if(!p)的语句,就是当
     p=flase 文字开始向下滚动!!查下API,很好理解的!!
      

  8.   

    o.innerHTML+=o.innerHTML; //这句代码是做什么用?  
    获取o元素的html代码,然后再累加写入o元素的body中
    o.onmouseover=function(){p=true}
    o.onmouseout=function(){p=false} //这两句代码有什么用?
    为o元素添加鼠标移出事件,p应该相当于一个全局的锁吧