元素没有方法有属性,为什么
Element has no method hasAttribute, Why?
我正在尝试从给定元素"向上"遍历 DOM 节点,以获取具有"animated"属性的第一个父元素。
var el = evt.target;
console.log(el);
while (!el.hasAttribute('animated'))
{ el = el.parentNode; }
return el;
console.log(el);
抛出错误:
>>>Uncaught TypeError: Object #<HTMLDocument> has no method 'hasAttribute'
这怎么可能?我已经清楚地声明了变量el
并且第一个日志是正确的.
document
对象:
- 是一个节点
- 是根元素的
parentNode
(如果您使用的是 HTML,那将是<html>
元素) - 不是元素。
具有属性,因此只有元素对象具有hasAttribute
方法。
到达文档对象时(或者当您不再测试元素时),您需要停止测试。
while (
el.nodeType === 1 &&
(!el.hasAttribute('animated'))
) {
var el = evt.target
是一个document
对象,因此没有hasAttribute
属性。
您还可以将其转换为返回null
或具有该属性的祖先节点的函数:
function findNodeWithAttribute(el, attr) {
while (true) {
if (!el || !el.hasAttribute) {
return null;
} else if (el.hasAttribute(attr)) {
return el;
}
el = el.parentNode;
}
}
相关文章:
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- Javascript:为什么是构造函数's __proto__属性Empty(){}
- 为什么可以't我在JavaScript中获取导航器对象的属性计数
- 为什么样式属性不适用于使用DOMParser创建的元素
- 为什么我可以'不要使用xx[this.index].style.display?它's说“;无法读取属性
- 为什么toStaticHTML删除data-*属性
- 类型错误:无法读取未定义的属性“toString” - 为什么
- 为什么没有从数组中存在的对象中删除属性
- 为什么可以't我得到特定跨度的ID属性
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- JQuery `length`属性工作不正常.为什么?
- 为什么html src属性中的相对url是因为Javascript函数中的完整路径
- 为什么属性存在于对象实例上,即使其原型发生了更改
- 为什么我得到“;无法获取属性的值'SetReturnValue'"当使用ceebox显示YouT
- 为什么属性选择器不适用于jQuery
- 为什么属性返回未定义而不是对象
- 为什么“this”不等于“Object”,为什么属性是“undefined”
- 聚合物生命周期:为什么属性尚未从'附件'回调
- 为什么属性'naturalWidth'并不总是在JS中的背景图像上返回
- 为什么属性初始化为null的对象数组处理得更好