2017-03-02 1 views
0

私は非常に単純な関数を持っています。これは、選択されたオブジェクトが特定の型の子を持つ場合にのみ動作します。この場合、ulがネストされています。オブジェクトに特定の要素の子があるかどうかを判断するにはどうすればよいですか?

私はこれを試してみました:

var onMouseOver = function() { 
if (this.getElementsByTagName('ul') > 0);{ 
    console.log('entered'); 
} 
} 

と、この:

var onMouseOver = function() { 
if (this.querySelector('ul') != null);{ 
    console.log('enter'); 
} 
} 

それは助けにはならない - 機能はまだ起動し、それは 'ヌル' をreturnes場合でも。

答えて

0

これらのセレクタのlengthプロパティを調べる必要があります。

var onMouseOver = function() { 
 
if (this.querySelectorAll('ul').length > 0);{ 
 
    console.log('enter'); 
 
} 
 
}

または

var onMouseOver = function() { 
 
if (this.getElementsByTagName('ul').length > 0);{ 
 
    console.log('entered'); 
 
} 
 
}

+0

私はこれらのバージョンを試しましたが、それでも動作しません。 例:htmlでは、[このような]ネストされた要素があります(http://pastebin.com/bKHPnvDb)。

  • の場合、要素3
  • は機能しませんが、それでも機能します。 – Lafioka

    0

    してみてください、この1 :)

    function ok(obj) { 
     
        var l = obj.children.length; 
     
    
     
        for (var i = 0; i <= l; i++) { 
     
        if (obj.children[i].tagName == "UL") { 
     
         var c = obj.children[i].children[0]; 
     
         alert("child id is :-" + c.tagName); 
     
         alert("child id is :-" + c.id); 
     
         alert("child value is :-" + c.innerHTML); 
     
         break; 
     
        } 
     
    
     
        } 
     
    }
    #child { 
     
        display: none; 
     
    }
    <!DOCTYPE html> 
     
    <html> 
     
    <body> 
     
        <div id="Parent" onmouseover="ok(this)">Find Child ? mouse over me 
     
        <p id="child">I'm Child</p> 
     
        <ul> 
     
         <li id="list">hello</li> 
     
         </ul> 
     
        </div> 
     
    </body> 
     
    </html>

    +0

    ありがとう、それは私が必要とするものではありません - 私は子供/子供が特定のタグである場合にのみ動作するものを探しています。この場合、ulがネストされている場合にのみ機能する関数が必要です。 – Lafioka

    +0

    更新を確認しました –

    +0

    ありがとうございました!それは私が思っていたより少し長いですが、動作します。 :) – Lafioka

    関連する問題