0

如果我在页面加载时调用以下函数:

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

我可以使用通配符为自己保存一些代码吗?就像是:

addOnload(checkHeaders_m\*)
4

4 回答 4

2

如果您的 onload 函数是全局的,那么它们将存在于window对象上:

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

或者,制作其他对象的函数属性,以免污染全局命名空间

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]);
}
于 2012-07-24T18:50:42.963 回答
1

好吧,您总是可以使用数组。但是您仍然必须进行多个函数调用 - 至少使用数组您可以编写循环而不是手动键入这些调用。

于 2012-07-24T18:48:53.760 回答
0

是什么checkHeaders_m1...?这看起来像是数组的理想候选者。

for(var i=0; i<checkHeaders_m.length; i++)
{
addOnload(checkHeaders_m[i]); 
}
于 2012-07-24T18:52:46.353 回答
0

怎么用Array.map

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

window当然,其他命名空间可能在哪里

或者

[checkHeaders_m1,checkHeaders_m2,checkHeaders_m3,checkHeaders_m4,checkHeaders_m5]
 .map(function(ch){addOnload(ch);return ch;});
于 2012-07-24T18:58:36.117 回答