2013-10-30 43 views
1

一直试图做这个一遍又一遍,但我的变量只输出未定义的div“当前”。所以我想通过一个“更改”变量从“功能一”到“功能二”。试图建立一个简单的例子:)将变量传递给setInterval函数

<div id="current"></div> 

<script> 
id = 0; 
setInterval(function one(){ 
id++; 
name = 'id' + id; 
},1000); 


setInterval(function two(){ 

    document.getElementById("current").innerHTML=name; //outputs undefined 

},10); 
</script> 
+0

'name'是'one()'的本地函数。将其声明为全局(如'id') – Reeno

+0

此处可以正常工作http://jsfiddle.net/tAZfH/ – Anton

+2

您的代码在此处运行:http://jsfiddle.net/74EPH/除第二个函数在'name'之前运行已经被第一个函数赋值了,这意味着它正在显示'window.name'属性的值(你会注意到jsfiddle实际上是“result”)。 @Reeno - 'name'是全球性的。 – nnnnnn

回答

1

http://jsfiddle.net/pPk4y/它的工作原理?点击链接运行。正如Sirko所说,由于'name'前面没有var,所以它变成了一个全局变量

id = 0; 
setInterval(function one(){ 
id++; 
name = 'id' + id; 
},1000); 


setInterval(function two(){ 

    document.getElementById("current").innerHTML=name; //outputs undefined 

},10); 
+0

是的,它的工作原理!看到我在真实代码中拥有“var”的“名称”前面! :) @ Dere_2929 – PeterP