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 に答える