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就开始了,这儿浏览器提示有错误:
“页面的某个脚本正忙,或者已停止响应。您可以停止该脚本、使用调试器打开脚本,或者继续运行脚本。”
在浏览器中两个脚本是否能同时执行???
展开
 我来答
百度网友a19d193
2013-05-14 · TA获得超过3446个赞
知道大有可为答主
回答量:1464
采纳率:100%
帮助的人:1433万
展开全部

问题如下

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代码本身是在相同进程下执行的,只是计时器是浏览器的独立进程而已。
圣僧不望尘寰
2013-05-14 · 超过14用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:36.6万
展开全部
每8秒执行一次 for(var j=0;j<10000;j++),程序会完全卡死的。因为运算不过来,不能这样写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ET13760
2013-05-14 · 超过31用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:71.3万
展开全部
你要先明白setInterval是什么意思,每8ms执行一次timer
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式