Javascript 一个body标签是否可以保存multiply onload=";setInterval();?
身体标签能保持两个设定的间隔吗?或者有两个函数使用相同的间隔 例:Javascript 一个body标签是否可以保存multiply onload=";setInterval();?,javascript,function,onload,setinterval,Javascript,Function,Onload,Setinterval,身体标签能保持两个设定的间隔吗?或者有两个函数使用相同的间隔 例: 您可以创建一个使用不同函数调用setInterval()两次的函数,并在body.onload()上调用它 我不认为两个函数可以有相同的间隔,除非你把它们封装在一个函数中,或者像这样内联调用它们: <body onload="setInterval(function(){ function1(); function2();}, 500);"> 只需使用并注册事件处理程序(在块中) 如果您只需要DOM树可用: $(
您可以创建一个使用不同函数调用setInterval()两次的函数,并在body.onload()上调用它 我不认为两个函数可以有相同的间隔,除非你把它们封装在一个函数中,或者像这样内联调用它们:
<body onload="setInterval(function(){ function1(); function2();}, 500);">
只需使用并注册事件处理程序(在
块中)
如果您只需要DOM树可用:
$(document).ready(function() {
setInterval(function1, 500);
setInterval(function2, 1000);
});
否则(如果需要加载所有图像等):
您的第一个示例很好:
window.onload = function() {
setInterval(function1, 500);
setInterval(function2, 1000);
}
function function1() {
console.log("function1");
}
function function2() {
console.log("function2");
}
请参阅上述代码的一个示例。在不发生冲突的情况下,根据需要实例化尽可能多的onload
<SCRIPT>
// Class Definition
OnLoad = function(taskFunction,miliseconds) {
var context = this;
context.cnt = 0;
context.id = null;
context.doTask=taskFunction;
context.interval = function() {
if(document.readyState == "complete"){
try{ context.stop();} catch(e){ throw new Error("stop error: " + context.id); }
try{ context.doTask();} catch(e){ throw new Error("load error: " + context.id); }
}
};
context.start = function(timing) {
if(context.id && context.id!=null)
context.stop();
context.cnt=0;
context.id=setInterval(context.interval,timing);
};
context.stop = function() {
var _id = context.id;
clearInterval(context.id);
context.id=null;
};
context.start(miliseconds ? miliseconds : 100);
};
// Example Onloads
new OnLoad(function(){
alert("onload 1");
}); // uses default timing of 100 miliseconds
new OnLoad(function(){
alert("onload 2");
},200);
new OnLoad(function(){
alert("onload 3");
},300);
</SCRIPT>
//类定义
OnLoad=函数(taskFunction,毫秒){
var context=this;
context.cnt=0;
context.id=null;
context.doTask=taskFunction;
context.interval=函数(){
如果(document.readyState==“完成”){
尝试{context.stop();}catch(e){抛出新错误(“停止错误:“+context.id”);}
尝试{context.doTask();}catch(e){抛出新错误(“加载错误:“+context.id”);}
}
};
context.start=函数(计时){
if(context.id&&context.id!=null)
context.stop();
context.cnt=0;
context.id=setInterval(context.interval,计时);
};
context.stop=函数(){
var _id=context.id;
clearInterval(context.id);
context.id=null;
};
上下文。开始(毫秒?毫秒:100);
};
//示例加载
新的OnLoad(函数(){
警报(“加载1”);
}); // 使用100毫秒的默认计时
新的OnLoad(函数(){
警报(“过载2”);
},200);
新的OnLoad(函数(){
警报(“过载3”);
},300);
试试这个,很简单。
你可以在这里运行这个并测试它
window.onload=function(){
函数foo(){
加载注释();
}
setInterval(foo,3600);}
函数Load_Note(){console.log(“api loded”)}
为什么人们仍然使用内联处理程序而不是创建适当的事件侦听器…同样的原因是人们仍然发布无用的响应(^-^)vTo来回答小偷…一种理论是,我还没有找到一种真正全面的方法来解决这一问题,它看起来对跨浏览器友好(除了jQuery之类的JS库)。当然可以,但是附加事件处理程序并不能在每个浏览器中都使用相同的函数,所以为什么不使用jQuery以干净的方式执行它呢?是的,关于事件处理程序,你是对的,但问题是关于时间间隔……别误会,你的解决方案很有效,这是一个很好的实践,但我不喜欢人们每一点时间都使用jQuery可以用纯JS完成的事情,按照您描述的第一种方式进行了尝试,效果非常好。谢谢。
window.onload = function() {
setInterval(function1, 500);
setInterval(function2, 1000);
}
function function1() {
console.log("function1");
}
function function2() {
console.log("function2");
}
<SCRIPT>
// Class Definition
OnLoad = function(taskFunction,miliseconds) {
var context = this;
context.cnt = 0;
context.id = null;
context.doTask=taskFunction;
context.interval = function() {
if(document.readyState == "complete"){
try{ context.stop();} catch(e){ throw new Error("stop error: " + context.id); }
try{ context.doTask();} catch(e){ throw new Error("load error: " + context.id); }
}
};
context.start = function(timing) {
if(context.id && context.id!=null)
context.stop();
context.cnt=0;
context.id=setInterval(context.interval,timing);
};
context.stop = function() {
var _id = context.id;
clearInterval(context.id);
context.id=null;
};
context.start(miliseconds ? miliseconds : 100);
};
// Example Onloads
new OnLoad(function(){
alert("onload 1");
}); // uses default timing of 100 miliseconds
new OnLoad(function(){
alert("onload 2");
},200);
new OnLoad(function(){
alert("onload 3");
},300);
</SCRIPT>