2011-11-08 197 views
0
<script> 
    var data1_1 = $value; 

    var data1_3 = $value; 

    var data1_5 = $value; 

</script> 

上述代碼是正確的硬編碼。 現在我想使用for循環使代碼更加靈活。 但是,data1_keysArr[i] = $value上出現錯誤。如何添加固定變量名稱並更改變量名稱

任何人都可以幫助我嗎?

在此先感謝!

<script> 

var keysArr = [1, 3, 5]; 

for(var i=0; i<keyArr.length; i++){ 

    data1_keysArr[i] = $value; 


} 

</script> 

回答

2

它看起來像你試圖使用for循環通過構造的名稱訪問以前的硬編碼值。如果是的話請嘗試以下

var keysArr = [1, 3, 5]; 
for (var i = 0; i < keyArr.length; i++) { 
    var name = 'data1_' + keyArr[i]; 
    window[name] = $value; 
} 

我不推薦這種方法,但因爲你基本上定義與此代碼的需求在全球許多變數。相反,我會把它們放在一個容器對象上。例如

var parent = {}; 
var keysArr = [1, 3, 5]; 
for (var i = 0; i < keyArr.length; i++) { 
    var name = 'data1_' + keyArr[i]; 
    parent[name] = $value; 
} 

console.log(parent.data1_1); // Prints $value 
+0

這個例子將產生data1_1, data1_2和data1_3;作者希望它包含keysArr索引(1,3和5):) – Kato

+0

@Kato哎呀,糾正它 – JaredPar

0

嘗試:

window['data1_' + keysArr[i]] = $value; 

編輯:而JaredPar是正確的:你或許應該使用的容器對象。

0

W3Schools有a great tutorial on arrays,你應該閱讀。它會真正幫助你,因爲它幾乎完全符合你的例子。

本質上,當您在全局上下文中使用「var」時,您正在爲窗口對象分配值。因此,你可以做到以下幾點:

var keysArr = [1, 3, 5]; 
for(var i=0; i<keysArr.length; i++) { 
    window['data1_'+keysArr[i]] = $value; 
} 

然而,這將是更正確使用您的值的數組(參見教程明白這一點):

var i, key, 
    keysArr = [1, 3, 5], 
    data = []; 

for(i=0; i < keysArr.length; i++) { 
    key = keysArr[i]; 
    data[key] = $value; 
} 
+0

W3Schools **不是** W3C。請看http://w3fools.com/看看他們爲什麼不好。 –

+0

@Felix - 感謝您的糾正;在這種情況下,我認爲這個問題仍然簡單而簡潔地回答了這個問題。 – Kato