1

私は書き込むphp配列を持っています<div id="first_<?php echo $z; ?>" class="source">

style.displayそれぞれのプロパティを変更できるように、JavaScript でループを作成しようとしています。sの合計量はfirst_、0 から 100 の範囲です。

私が知っているのは、次のようなことだけです。

function setup() {
    cow = document.getElementById('first_1');
    cow.style.display='none';
    cow = document.getElementById('first_2');
    cow.style.display='none';
    cow = document.getElementById('first_3');
    cow.style.display='none';
  }

これを行う方法についての私の推測は、次のようになります。

for (var i = 0; i < 100; i++) { 
    cow = document.getElementById('first_'var i);
    cow.style.display='none';
}
4

4 に答える 4

1

使い方がi間違っています。変数を宣言varするときにのみ使用します。

function setup() {
    for (var i = 0; i < 100; i++) {
        document.getElementById('first_' + i).style.display = 'none';
    }
}

取得した要素が存在することを確認して、例外がスローされないようにする必要があります。要素を取得しようとすることでそれを行い、それが「真実」である場合は、style.display変数を設定します。

function setup() {
    for (var i = 0; i < 100; i++) {
        var elem = document.getElementById('first_' + i);
        if (elem)
            elem.style.display = 'none';
    }
}

私が読んだことから、あなたは最大のものを提供できるようになりたいと思っています。パラメータを追加するだけです:

function setup(max) {
    for (var i = 0; i < max; i++) {
        ...

また、0 から 100までの範囲のように聞こえます。その場合は、を次のように変更<<=ます。

function setup(max) {
    for (var i = 0; i < max; i++) {
        ...

これは悪い習慣であり、代わりにfirst_1スルーfirst_100ブロック全体を でラップすることをお勧めしますdiv

于 2013-04-05T01:34:20.130 に答える
1
for (var i = 0; i < 100; i++) { 
  var cow = document.getElementById('first_' + (i + 1));
  if (cow)
    cow.style.display='none';
}
于 2013-04-05T01:35:08.380 に答える
0

i間違って追加してvarいます。変数を宣言しているときにのみ使用し、使用していません。これを試して:

for (var i = 0; i < 100; i++) { 
    cow = document.getElementById('first_' + i);
    cow.style.display = 'none';
}
于 2013-04-05T01:34:54.303 に答える
0

IE7 以前をサポートする必要がない場合は、次のように、属性セレクターを使用してquerySelectorAll()を使用し、結果のノードを反復処理できます。

var elements = document.querySelectorAll('[id^="first_"]');

for(i = 0; i < elements.length; i += 1){
    elements[i].style.display = 'none';
}

querySelectorAll()Chrome、FF、Opera、Safari、IE8+ でサポートされており、有効な CSS セレクターを指定できます。

first_ここでの利点は、で始まる識別子を持つノードのコレクションを動的に作成し、それを反復処理するだけなので、要素の数を事前に知る必要がないことです。

divのIDで始まる要素のみを選択したい場合first_は、セレクターでより具体的にして使用することもできますdocument.querySelectorAll('div[id^="first_"]');


デモ- 使用querySelectorAll()


于 2013-04-05T01:45:56.857 に答える