Reputation: 5507
I have a div, which contains n number 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?
Upvotes: 2
Views: 5576
Reputation: 31300
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;
}
}
Upvotes: 5
Reputation: 44632
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;
}
}
Upvotes: 1
Reputation: 74899
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
Upvotes: 0