js中setInterval的使用问题
functiontimer(){for(varj=0;j<10000;j++){varel=document.getElementsByTagName("body")[0...
function timer(){
for(var j=0;j<10000;j++){
var el=document.getElementsByTagName("body")[0];
el.innerHTML="这是第"+j+"个数";
}
}
function poll(){
window.setInterval(timer,8);
for(var j=0;j<1000000;j++){
var el=document.getElementsByTagName("div")[0];
el.innerHTML="这是div"+j+"个数";
}
}
<body onload="poll()">
<div style="border:solid 1px red;height:50px;width:200px"></div>
<body/>
脚本中如上,poll未执行完时,timer就开始了,这儿浏览器提示有错误:
“页面的某个脚本正忙,或者已停止响应。您可以停止该脚本、使用调试器打开脚本,或者继续运行脚本。”
在浏览器中两个脚本是否能同时执行??? 展开
for(var j=0;j<10000;j++){
var el=document.getElementsByTagName("body")[0];
el.innerHTML="这是第"+j+"个数";
}
}
function poll(){
window.setInterval(timer,8);
for(var j=0;j<1000000;j++){
var el=document.getElementsByTagName("div")[0];
el.innerHTML="这是div"+j+"个数";
}
}
<body onload="poll()">
<div style="border:solid 1px red;height:50px;width:200px"></div>
<body/>
脚本中如上,poll未执行完时,timer就开始了,这儿浏览器提示有错误:
“页面的某个脚本正忙,或者已停止响应。您可以停止该脚本、使用调试器打开脚本,或者继续运行脚本。”
在浏览器中两个脚本是否能同时执行??? 展开
3个回答
展开全部
问题如下
1. setInterval(timer, 8), 8是8毫秒啊,8毫秒你的电脑能完成10000次循环吗?没等跑完8毫秒过去了,timer()再次执行,又10000,一般人的电脑肯定跑不了
2. 你向body标记里面写内容的同时div不就被删除了么?poll里面还试图向这个div里面写东西,不通
建议把setInterval(time,8)改成setInterval(time, 1000)
两个for循环都改成10,测试成功了再改成大的数值。代码也帮你修改了一下,这个符合逻辑
<script>
function timer(){
for(var j=0;j<10;j++){
var el=document.getElementsByTagName("div")[0];
el.innerHTML+="这是第"+j+"个数<br />";
}
}
function poll(){
window.setInterval(timer,1000);
for(var j=0;j<10;j++){
var el=document.getElementsByTagName("div")[1];
el.innerHTML="这是div"+j+"个数<br />";
}
}
</script>
<body onload="poll()">
<div style="border:solid 1px red;height:50px;width:200px"></div>
<div style="border:solid 1px red;height:50px;width:200px"></div>
<body/>
更多追问追答
追问
我这样做的目的是在考虑线程的问题,把第二个参数的值设得很小,就是让poll()还未执行完时,通过poll()中的setInterval函数开启另一个函数,观察浏览器是怎么处理这样的问题的,不知道楼上是怎么考虑这个问题的??
追答
setInterval和setTimeout都是在浏览器控制下进行的,当时间满足条件时,浏览器就会要求当前页面执行预定义的代码,因此js代码本身是在相同进程下执行的,只是计时器是浏览器的独立进程而已。
展开全部
每8秒执行一次 for(var j=0;j<10000;j++),程序会完全卡死的。因为运算不过来,不能这样写。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要先明白setInterval是什么意思,每8ms执行一次timer
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询