7

関数内にこのコードがあり、それを短くしたい - 配列内のすべての項目に同じスタイルを適用します。

document.getElementById(divsArray[0]).style.visibility = 'hidden';
document.getElementById(divsArray[1]).style.visibility = 'hidden';
document.getElementById(divsArray[2]).style.visibility = 'hidden';
document.getElementById(divsArray[3]).style.visibility = 'hidden';

これまでの回答はありませんでした(コードをループしているため??)

以前に表示されていたスライドの可視性のみを非表示に設定することで解決しました

x = i;
i = i+1;

document.getElementById(divsArray[x]).style.visibility = 'hidden';
4

9 に答える 9

8

ループを使用するのはどうですか:

for (var i = 0; i < 4; i++) {
    document.getElementById(divsArray[i]).style.visibility = 'hidden'; 
}
于 2010-08-18T15:07:30.003 に答える
5

何か違うものを提供するために、jQueryソリューション:

$(divsArray).each(function() {
  $(this).css("visibility", "hidden");
});

編集: 最初に DOM 参照を収集する必要があるようです。(divsArray は実際には div 名の単なる配列であり、div 自体ではありませんか?)

$(divsArray).each(function() {
  $("#" + this).css({ "visibility": "hidden" });
});
于 2010-08-18T15:15:41.040 に答える
4

PrototypeMootoolsの両方での動作は次のとおりです。

$(divsArray).each(function(item) {
  $(item).setStyle({visibility: "hidden"});
});
于 2010-08-18T15:45:39.963 に答える
4

もっとdivがあるかもしれないと私には思えます... Darinのコードにこの変更を提案できますか:

for (var i = 0; i < divsArray.length; i++) {
   document.getElementById(divsArray[i]).style.visibility = 'hidden'; 
}
于 2010-08-18T15:31:40.157 に答える
4

次の関数を divsArray の同じ/子孫のスコープに入れることができます。

function baka(idx) {
  document.getElementById(divsArray[idx]).style.visibility = 'hidden';
}

次に、どちらかを行うことができます

baka(0);
baka(1);
baka(2);
baka(3);

また

for (var i = 0; i < 4; i++)
  baka(i);

無意味に見えますが、そのような配列がさらにある場合は、関数を次のように変更することをお勧めします。

function aho(arr, idx) {
  document.getElementById(arr[idx]).style.visibility = 'hidden';
}

次のような配列をループします。

for (var i = 0; i < divsArray.length; i++)
  aho(divsArray, i);

いいえ、マクロもテンプレートもありません。

于 2010-08-18T15:56:38.430 に答える
2
for (i=0;i<4;i++) {
  document.getElementById(divsArray[i]).style.visibility='hidden';
}
于 2010-08-18T15:07:33.927 に答える
1

私たち全員が積み重なっている限り、私は最も直接的なアプローチを取ります:D

document.getElementById(divsArray[0]).style.visibility =
document.getElementById(divsArray[1]).style.visibility =
document.getElementById(divsArray[2]).style.visibility =
document.getElementById(divsArray[3]).style.visibility = 'hidden';

そして、穀物に逆らうために:

var d = null, i = 0;
while (d = document.getElementById(divsArray[i++])) {
    d.style.visibility = 'hidden';
}
于 2010-08-18T17:06:32.087 に答える
1

私はその挑戦に「抵抗」できませんでした。それらに同じクラスを追加して、次のようなことをすると思います(プロトタイプの例):

$$('.className').invoke('setStyle', { 'visibility' : 'hidden' });
于 2010-08-18T19:43:53.490 に答える