如何同时运行两个单独的功能?如果我想要两个时钟,一个计数,另一个计数,我希望它们同时运行,我该怎么做?
如果我刚才做了:
var up = 1; while(true){ document.write(up); up++; if(up==11) up=1; } var down = 10; while(true){ document.write(down); down--; if(down==0) down=10; }
……它会继续数数……
解决方法
Javascript是单线程的.只有一个线程可以访问该页面.
在某些HTML5浏览器中,可以使用Web Workers在另一个线程中执行某些代码,然后通过消息传递与主线程进行通信,但Web Worker线程无法以任何方式访问DOM.
如果您希望计数器在循环中运行,那么典型的方法是使用计时器,然后在每次计时器运行时设置DOM中对象的内容.通过这种方式,您可以看到同时运行多个事物,但实际上,它们仍然是一次一个,只是单独计时.
这是两个“出现”同时运行的计数器的示例:http://jsfiddle.net/jfriend00/3yc9r/.
var cntr1 = 1; var cntr2 = 2; setInterval(function() { document.getElementById("time1").innerHTML = cntr1 += 13; },33); setInterval(function() { document.getElementById("time2").innerHTML = cntr2 += 5; },44);
另外,你真的不想在循环中做document.write().将运行一段时间的代码应该在页面加载后运行,并且应该直接修改DOM中的对象而不是使用document.write().