【发布时间】:2017-09-01 08:44:35
【问题描述】:
为什么我在下面的代码中遇到错误。错误说。请指教。我想向上移动,直到找到标签“h2”。
“未捕获的 TypeError:无法读取属性 'querySelector' of null”
var z =document.querySelector('input[id="nf-field-448"]');
x=z.parentElement;
while(!x.querySelector('h2'))
{
if(x.previousElementSibling !== "null")
{
x = x.previousElementSibling;
}
else
{
x = x.parentElement;
}
}
alert('true');
}
【问题讨论】:
-
如果没有父 H2,那么你最终会到达 DOM 树的顶部,
x.previousElementSibling和x.parentElement都将返回 null。然后尝试执行x.querySelector(...)将引发您的错误。请参阅How to create a minimal, complete and verifiable example。 -
代码似乎转到第一个具有 H2 后代的元素(即
x.querySelector('h2')返回 true 的位置),它不会在找到的第一个 H2 处停止(即x.tagName.toLowerCase() == 'h2'的位置) .
标签: javascript dom