1

「マスク」という名前のすべてのdivを非表示にしたい

これは私のHTMLです:

<div id="first">
 <div id="firsttest"></div>
  <div class="one onehelp">
   <div id="mask">
    <div id="onetip"></div>
   </div>
   <div id="Div5"></div>
   <div id="resultone"></div>
  </div>
  <div class="two twohelp">
   <div id="mask">
    <div id="twotip"></div>
   </div>
   <div id="Div6"></div>
   <div id="resulttwo"></div>
  </div>
  <div class="three threehelp">
   <div id="mask">
    <div id="threetip"></div>
   </div>
   <div id="Div7"></div>
   <div id="resultthree"></div>
  </div>
</div>

以下の JS コードを使用して「マスク」を非表示にしようとしましたが、最初の div だけで、すべての div で機能しませんでした。

var hidemask = document.getElementById("mask");
hidemask.style.display = "none";

純粋な Javascript を使用してそれらをすべて非表示にする方法はありますか。jQueryはありません。

4

3 に答える 3

8

HTML で重複した ID を使用するべきではありません。クラスに変更することを検討してください。

に変更id="mask"するとclass="mask"、次のことができます。

var hidemask = document.querySelectorAll(".mask");

for (var i = 0; i < hidemask.length; i++) {
    hidemask[i].style.display = "none";
}

または、石器時代 (IE7 以下) のブラウザーの場合は、次のようにします。

    var elems = document.getElementsByTagName('*'), i;
    for (i in elems) {
        if((' ' + elems[i].className + ' ').indexOf(' ' + 'mask' + ' ') > -1) {
            elems[i].style.display = "none";
        }
    }
于 2013-10-01T22:29:29.477 に答える
2

id属性はドキュメントごとに一意である必要があります。classおそらく、でやりたいことができます。divしたがって、次のように複数の s があります。

<div id="something" class="mask"></div>

次に、次のことができます。

var divsWithMask = document.querySelectorAll(".mask");
for(var i = 0; i < divsWithMark.length; i++) {
    divsWithMak[i].style.display = "none";
}
于 2013-10-01T22:30:32.893 に答える
1

同じ ID を複数回割り当てることはできません。

ただし、ID「マスク」を使用して属性クラスを div に追加できます。例:

<div id="mask-or-something-else" class="mask">...</div>

そして、このクラスですべての要素を選択します:

var hidemask = document.getElementsByClassName("mask");
for(i = 0; i < hidemask.length; i++)
    hidemask[i].style.display = "none";
于 2013-10-01T22:31:20.023 に答える