2012-07-24 78 views
0

如果我調用頁面加載以下功能:通過使用通配符JavaScript的通配符功能調用

addOnload(checkHeaders_m1) 
addOnload(checkHeaders_m2) 
addOnload(checkHeaders_m3) 
addOnload(checkHeaders_m4) 
addOnload(checkHeaders_m5) 

我能拯救自己的一些代碼?像這樣:

addOnload(checkHeaders_m\*) 
+0

答案已被刪除,但值得注意的是,在結構上,這可能是一個糟糕的設置,可以簡化。 – Mathletics 2012-07-24 18:52:09

回答

2

如果全球然後他們會在window對象上存在您的onload功能:

for (var i = 1; i < 6; i++) { 
    addOnload(window['checkHeaders_m' + i]); 
} 

或者,做一些其他物體的功能屬性,所以您don't pollute the global namespace

var myObj = { 
    checkHeaders_m1: function() { ... }, 
    checkHeaders_m2: function() { ... }, 
    checkHeaders_m3: function() { ... }, 
    checkHeaders_m4: function() { ... }, 
    checkHeaders_m5: function() { ... } 
}; 

for (var i = 1; i < 6; i++) { 
    addOnload(myObj['checkHeaders_m' + i]); 
} 
+0

我在3分鐘內學習了Stack,而不是在其他地方的一個小時。非常感謝。 – kjarsenal 2012-07-24 19:02:46

1

那麼你可以隨時使用數組。但是你仍然需要進行多個函數調用 - 至少在數組中你可以編寫一個循環而不是手動輸入這些調用。

0

是什麼checkHeaders_m1...? 這看起來像一個陣列的理想候選人。

for(var i=0; i<checkHeaders_m.length; i++) 
{ 
addOnload(checkHeaders_m[i]); 
} 
0

如何使用Array.map

[1,2,3,4,5].map(function(a){addOnload(window['checkHeaders_m'+a]); return a;}); 

window可能會有一些其他的命名空間ofcourse

或者

[checkHeaders_m1,checkHeaders_m2,checkHeaders_m3,checkHeaders_m4,checkHeaders_m5] 
.map(function(ch){addOnload(ch);return ch;});