我正在迭代DOM来改变不同元素的显示特性。我循环遍历元素,并使用JQuery .height()方法获取高度:
var myHeight = myJQueryElement.height();
麻烦的是,当我在Firefox中点击“comment”元素时,我收到此错误:
错误:未捕获的异常:[Exception ...“无法转换JavaScript参数arg 0 [nsIDOMViewCSS.getComputedStyle]”nsresult:“0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS)”location:“JS frame :: http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js ::: :第18行“数据:否]
好的,我可以检查nodeType,对吗?不,奇怪的是,当我打电话时:
var nt = myJQueryElement.nodeType;
nodeType始终为“未定义”。很奇怪,因为当我点击Firebug中Javascript调试器中的元素时,它会向我显示一个正确的nodeType为8。
我想做的就是检查元素是否有高度> 0,否则跳过它。
任何线索如何做到这一点?
答案 0 :(得分:2)
您需要检查DOM节点,而不是jQuery对象。
// ----------------------v----extract the DOM node at index 0
var nt = myJQueryElement[ 0 ].nodeType;
答案 1 :(得分:0)
我可以在迭代<body>
时重新创建错误:
var body = document.getElementsByTagName('body')[0];
for (var i in body.children) {
console.log(body.children[i]);
console.log($(body.children[i]).nodeType);
}
但是在使用.each()
$('body').children().each(function() {
console.log($(this).height());
});
可能使用.each()
递归来迭代DOM元素