6

多くのDOM要素.eachのプロパティを変更するためにループを作成(または使用)しようとしています。style:display私の最初の考えはgetElementsByName、私が名前を付けたすべての要素を選択するために使用することでしたptext1:

<p id="ptext0"name="ptext">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext1"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext2"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext3"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext4"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext5"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p id="ptext6"name="ptext1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>

使用して

 var TextElements = document.getElementsByName("ptext1");

名前を持つすべての要素のオブジェクト/配列を作成するにはptext1

しかし、そのメソッドを正しく機能させることができなかったので、.each.

両方

$.each(TextElements, function (index) {
    this.style.display="none";
});

$('td[name=ptext1]').each(function (index) {
    this.style.display="block";
});

正常に動作していないようです (アラートを使用して動作するかどうかをテストしています)。

誰かが私の間違いを見つけたり、より良い方法を提案したりできるなら、私はすべて耳を傾けます. これは単純な操作である必要がありますが、何らかの理由で試行するたびに失敗します。

編集: . hide() を除いて機能して$('p[name=ptext1]').hide()おり$('p[name=ptext1]').show() 、非表示にしたい行の上の行も非表示にします。

<p id="ptext0"name="ptext">Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        </p>

各行には異なる id タグがありますが、名前タグを使用して非表示にする行を追跡しようとしていますが、残す必要がある行 (name="ptext") も非表示になります。

4

4 に答える 4

12

単に使用しないのはなぜですか:

$('p[name="ptext1"]').css( 'display', 'none');// you can use block...

行を表示したままにしたい場合は、その行を次のように除外し.not()ます。

$('p[name="ptext1"]').not('#ptext3').css( 'display', 'none');// you can use block...

http://jsfiddle.net/4JCvt/

また、標準の JavaScript を使用したいだけの場合は、次のようにできます。

var TextElements = document.getElementsByName("ptext1");

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

http://jsfiddle.net/4JCvt/2/

于 2012-06-25T10:06:27.197 に答える
0

これは簡単で、IE8 で動作します。<p>すべての要素を<div>「myDiv」という名前に入れるだけです

function myFunction() {
    var x = document.getElementById("myDIV");
    var y = x.getElementsByTagName("P");
    var i;
    for (i = 0; i < y.length; i++) {
        y[i].style.display="none";    }
}
  • 内のすべての ("*") 要素を変更する場合は<div>、次を使用します。

    var y = x.getElementsByTagName("*");
    
  • <P>の 2 番目の要素を変更する場合は、次<div>を使用します。

    x.getElementsByTagName("p")[1].style.backgroundColor = "red";
    

配列に似ています。

于 2015-03-17T00:19:25.140 に答える
0

これはうまくいきます

jQuery("*[name$='ptext1']").css( 'display', 'block');

また

jQuery("*[name$='ptext1']").css( 'display', 'none');
于 2012-06-25T10:08:21.360 に答える