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
加载中,请稍侯......
精彩评论