2016-08-18 17 views
0

親要素に子要素があるかどうかを知るブール値を取得しようとしています。制約のいくつかは以下のとおりです。バニラJS不足している子要素を持つ要素を検索

  1. ボックスがフッター要素を持っていない場合は、これらの「ボックス」のボックスのいずれかがフッター要素に
  2. を持っているため

  3. チェックや参照のx数に制限はありません、クラスを追加

    <div class="data-trend"> <header></header> <div class="main"></div> <footer></footer> </div>

    <div class="data-trend"> <header></header> <div class="main"></div> <footer></footer> </div>

    あなたはバニラでこれをたくさんやっている場合、それはforEachヘルパーを定義するために理にかなって

    var elems = document.querySelectorAll('.data-trend'), 
     
        len = elems.length, 
     
        i = -1 
     
    while(++i < len) { 
     
        if(!elems[i].querySelector('footer')) elems[i].classList.add('no-footer') 
     
    }
    .no-footer { border: 3px solid blue; }
    <div class="data-trend"> 
     
        <header>Testing</header> 
     
        <div class="main"></div> 
     
        <footer>Footer</footer> 
     
    </div> 
     
    
     
    <div class="data-trend"> 
     
        <header>Testing</header> 
     
        <div class="main"></div> 
     
        <footer>Footer</footer> 
     
    </div> 
     
    
     
    <div class="data-trend"> 
     
        <header>Testing</header> 
     
        <div class="main"> 
     
        <span class="glyphicons"><span> 
     
        </div> 
     
    </div>

+0

私は 'qu erySelector'を実行し、次に 'find'を実行します。それで私は長さをチェックしようとしましたが、3つのボックスがあるので、0という値は決して得られません。私は 'contains'を使用しようとしました。 – pertrai1

+1

このようなものが動作するはずです: 'var elems = document.querySelectorAll( '。data-trend')、len = elems.length、i = -1; while(++ i jmcgriz

+0

はい、しかし、私はどのようにelemsを取って、それらのうちのどれにフッターがないのか把握しますか? – pertrai1

答えて

1

は、実際の答えの中に上記のコメントを移転しましたあなた自身のための機能

function forEach(elems, fn){ 
    var len = elems.length, 
     i = -1 
    while(++i < len) { 
    fn(elems[i]) 
    } 
} 
関連する問題