2012-07-24 75 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;});