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时陷入死循环 这种想法为什么不对啊,那位大侠能告诉一下这个程序的执行顺序是什么,看迷糊了
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时陷入死循环 这种想法为什么不对啊,那位大侠能告诉一下这个程序的执行顺序是什么,看迷糊了
startmarqueesetTimeout(start,delay);调用 start函数start函数调用 scrolling函数
function start() {
t=setInterval(scrolling,speed);//过一段时间才会去执行scrolling
if(!p)o.scrollTop+=2;//马上就改变o.scrollTop了.
}
所以在后面执行中,不会陷入死循环