如果想要检测某个节点是否具有子节点或属性,那么可以使用hasChildNodes()和hasAttributes()方法,如下例所示:
ADS.addEvent(window, 'load', function() { ADS.log.header('Attributes And ChildNodes'); var h2 = document.getElementsByTagName('H2')[0]; ADS.log.write(h2.nodeName); ADS.log.write(h2.nodeName + ' hasChildNodes: ' + h2.hasChildNodes()); ADS.log.write(h2.nodeName + ' childNodes: ' + h2.childNodes); ADS.log.write(h2.nodeName + ' number of childNodes: '+ h2.childNodes.length); ADS.log.write(h2.nodeName + ' attributes: ' + h2.attributes); ADS.log.write(h2.nodeName + ' number of attributes: '+ h2.attributes.length); // 下面这行在IE中会出错 ADS.log.write(h2.nodeName + ' hasAttributes: '+ h2.hasAttributes()); });
运行以上代码后,日志窗口将会显示以下结果:
□ H2
□ H2 hasChildNodes: true
□ H2 childNodes: [object NodeList]
□ H2 number of childNodes: 1
□ H2 attributes: [object NamedNodeMap]
□ H2 number of attributes: 0
□ H2 hasAttributes: false
如果只想知道某个节点是否包含什么时,使用hasChildNodes()和hasAttributes()方法是非常便利的。但是,如果想知道节点中包含多少个子节点或属性时,那就需要使用childNodes和attributes属性。
转载请注明:陈童的博客 » ADS3.7 DOM2核心和DOM2 HTML——Node对象之五:检测是否具有子节点和属性