TypeError: getAttribute 不是 JavaScript 中的函数
TypeError: getAttribute is not a function in JavaScript
出现“TypeError: getAttribute is not a function”错误的原因有多种:
getAttribute
在 jQuery 对象而不是 DOM 元素上调用方法。- 在不是有效 DOM 元素的对象上调用方法。
- 拼写错误
getAttribute
(区分大小写)。 - 将 JS 脚本标记放在声明 DOM 元素的代码上方。
如果您使用 jQuery,请改用.attr
方法,因为 jQuery 对象不公开getAttribute
方法。
// ✅ use `attr` instead of `getAttribute` const result = $('#box').attr('your-attribute'); console.log(result);
下面是错误如何发生的示例。
const obj = {}; // ⛔️ Uncaught TypeError: obj.getAttribute is not a function obj.getAttribute('data-test');
对不是有效 DOM 元素的对象调用
getAttribute方法会导致错误。
只调用getAttribute
有效的 DOM 元素
确保在getAttribute()
声明 DOM 元素后,在有效的 DOM 元素上调用该方法并将 JS 脚本标记放在 body 标记的底部。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> </head> <body> <div id="box" data-test="example">Box</div> <!-- ✅ load jQuery ✅ --> <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous" ></script> <!-- ✅ Your JS script here ✅ --> <script src="index.js"></script> </body> </html>
请注意,JS 脚本标签必须放在正文的底部,在 DOM 元素之后。否则,我们最终会index.js
在创建 DOM 元素之前运行该文件。
这是文件的代码index.js
。
const box = document.getElementById('box'); // 👇️ "example" console.log(box.getAttribute('data-test'));
请注意,该getAttribute
方法只能在有效的 DOM 元素上调用。
如果错误仍然存在,请确保您没有拼错,getAttribute
因为它区分大小写。
console.log
调用方法的值并检查它是否是有效的 DOM 元素。 getAttribute
调用前检查元素是否存在getAttribute
如果您调用该方法的元素有时不存在,请在调用该getAttribute
方法之前有条件地检查该元素是否存在。
例如,一个基本的 DOM 元素有一个对象类型,所以我们可以getAttribute
在调用方法之前检查该值是否是一个对象并包含该属性。
const box = null; if (typeof box === 'object' && box !== null && 'getAttribute' in box) { console.log(box.getAttribute('data-test')); }
我们的if
条件使用逻辑与 (&&) 运算符,因此要if
运行该块,必须满足所有条件。
我们首先
检查变量是否box
存储了一个类型为 object 的值,因为 DOM 元素的类型为 object 。
然后我们
检查变量是否不等于 null。不幸的是,如果您使用 来检查 null 的类型console.log(typeof null)
,您将得到一个"object"
值,因此我们必须确保该值不是
null
。
console.log(typeof null); // 👉️ object
getAttribute
然后我们知道我们可以安全地调用getAttribute
对象上的方法。
这种方法称为鸭子打字。
使用 duck-typing 时,我们只需检查对象是否实现了特定的属性或方法,如果实现了,我们就假定它是正确类型的对象。
结论
getAttribute()
要解决“getAttribute is not a function”错误,请确保在声明 DOM 元素后在有效的 DOM 元素上调用该
方法,并将 JS 脚本标记放在 body 标记的底部。
# 额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: