2016-06-19 16 views
0
<div class="main"> 
    <p>I don't want this</p> 
    <div class="sub">I want this</div> 
</div> 

<div class="main"> 
    <p>I don't want this</p> 
    <div class="sub">I want this</div> 
</div> 

"main"要素内のすべての "sub"要素を選択する方法は誰でも知っています。 私は試しました document.getElementsByClassName("main").getElementsByClassName("sub")
しかし、それは動作しません。明確にするために、私はすべての "サブ"要素を "メイン"クラスの中に入れたいが、どうやってそれをどうやって理解することはできない。すべてのヘルプは"main"要素内のすべての "sub"要素を選択する方法

+1

document.getElementsByClassName( "main")は要素の配列を返します。したがって、それぞれをループしてgetElementsByClassName( "sub")を実行する必要があります。 – chriss

+1

[クラス内のクラスの子孫のCSSセレクタ]を参照してください(http:// stackoverflow .com/q/11475553/1529630)と[getElementsByClassNameは何を返しますか?](http://stackoverflow.com/q/10693845/1529630) – Oriol

答えて

4

は単にdocument.querySelectorAll()とCSSセレクタを使用いただければ幸いです。あなたの投稿をHTMLに.main要素内部.sub要素を配置しないただし

var subs = document.querySelectorAll('.main .sub'); 

を。彼らは兄弟です。場合:

var subs = document.querySelectorAll('.main + .sub'); 

または:

var subs = document.querySelectorAll('.sub'); 
+0

助けてくれてありがとう、明日これを試してみます –

+0

私はタイヤを使っていますこのメソッドは、 "サブ1"または "サブ2"のクラスを持つdivsも返します。私は自分のiPad上に書いているノートのために "サブ"のクラスを持つdivを選択するだけです。 –

0

は現在、あなたの例では、あなたのHTMLには子クラスを持っていません。あなたのHTMLは、代わりに次のようになります。

<div class="main">I don't want this 
    <div class="sub">I want this</div> 
</div> 
+0

Tnx間違いなくHTMLコードを書くのは簡単ではない –

1

あなたのコードは動作しません、あなたは内の各項目を反復処理する必要があると思いますので、document.getElementsByClassName("main")の結果は、HTMLCollection(要素のリストのようなもの)であるため、このリストを開き、それぞれの要素に.getElementsByClassName("sub")を呼び出し、すべての結果リストを連結します。

しかし、もっと簡単な方法があります。あなたのサンプルコードで.sub要素のどれもが.mainの中にネストされていない。また

var elements = document.querySelectorAll('.main .sub'); 

を使用できるように、今日のブラウザでは、document.querySelectorAllをサポートしています。したがって、上記の結果はとにかく空になります。

+1

関連性はないが、 'getElementsByClassName'はHTMLCollectionを返す。 – Oriol

+0

はい、そうです。私は自分の答えを修正した。ありがとうございました。 – Rafael

0

document.getElementsByClassName("sub")は、例では.sub要素を選択するのに十分です。

+1

しかし '.sub'要素は' .main'の外側にもあります。 – Oriol

+0

Oriolの権利私はちょうど.mainの中にある.subを探していますが、 –

+0

に答える時間をとってくれてありがとうございました。これは私が書いたものです: "あなたの例で"(私はあなたにその特定の状況の解決策が必要でした) – Johannes

関連する問題