function startmarquee(lh,speed,delay,id) {
var t;
var p=false;
var o=document.getElementById(id);
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+=2;
}
function scrolling() {
if(o.scrollTop%lh!=0) {
o.scrollTop+=2;
if(o.scrollTop>=o.scrollHeight/2)o.scrollTop=0;
}else {
clearInterval(t);
setTimeout(start,delay);
}
}
setTimeout(start,delay);
}这个函数中因为o.scrollTop=0,所以会在start()函数调用setInterval时陷入死循环 这种想法为什么不对啊,那位大侠能告诉一下这个程序的执行顺序是什么,看迷糊了

解决方案 »

  1.   

    a里调用b函数,b里调用a函数,我怎么看不懂你要做什么呢
      

  2.   

    先执行
    startmarqueesetTimeout(start,delay);调用 start函数start函数调用 scrolling函数
      

  3.   

    主要看这里
    function start() {
    t=setInterval(scrolling,speed);//过一段时间才会去执行scrolling
    if(!p)o.scrollTop+=2;//马上就改变o.scrollTop了.
    }
    所以在后面执行中,不会陷入死循环