开发者

How to check if a div has element innerHTML

I have a div, which contains n 开发者_如何学JAVAnumber of child nodes. I have a for loop:

for (iloop = 0; iloop < summaryDiv.childNodes.length; iloop++) {
    if (summaryDiv.childNodes[iloop].innerHTML.contains('display:block')) {
        flag = false;
    }
}

Here some of the child nodes don't contain the element innerHTML. I need to check if the child node contains innerHTML element, then I need to check for the style (display:block). How can I do this?


If you want to check the style of something, you do not need innerHTML. Instead, access the display value directly from the style element that is defined by default on DOM elements.

var children = summaryDiv.childNodes; // Avoid excessive scope chain walking (faster!)
for ( var i=0, l=children.length; i<l; i++ ) {
    if ( children[i].style && children[i].style.display == "block" ) {
        flag = false;
    }
}


Use the display property directly:

for (var i = 0; i < summaryDiv.childNodes.length; i++) {
    if (summaryDiv.childNodes[i].style && summaryDiv.childNodes[i].style.display == 'block') {
        flag = false;
    }
}


You can check if the element has a property "innerHTML".

<html>
<body>
<div id="div">hello</div>
<script type="text/javascript">

    document.write("div: " + ("innerHTML" in document.getElementById("div")));
    document.write("<br />");
    document.write("div.child: " + ("innerHTML" in document.getElementById("div").firstChild));
</script>
</body>
</html>

produces:

div: true
div.child: false
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜