2013-10-30 218 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