迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

JavaScript 中 Cannot set property 'innerHTML' of Null 错误

作者:迹忆客 最近更新:2023/01/01 浏览次数:

“Cannot set property 'innerHTML' of Null”错误的发生有两个原因:

  1. innerHTML 属性设置为空值(不存在的 DOM 元素)。
  2. 在声明 DOM 元素的 HTML 上方插入 JS 脚本标记。

下面是一个产生上述错误的示例代码

const el = null;

// ⛔️ Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')
el.innerHTML = 'new value';

JavaScript 中 Cannot set property 'innerHTML' of Null

要解决“Cannot set property 'innerHTML' of Null”错误,请确保要设置 innerHTML 属性的 DOM 元素存在。 如果我们使用 getElementById() 方法并向其传递一个 DOM 中不存在的 ID,则最常发生该错误。

const el = document.getElementById('does-not-exist');
console.log(el); // 👉️ null

// ⛔️ Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')
el.innerHTML = 'new value';

DOM 中不存在具有提供的 id 的元素,因此 getElementById 方法返回空值。

当我们尝试将 innerHTML 属性设置为空值时,会发生错误。

出现错误的另一个常见原因是在声明 DOM 元素之前放置 JS 脚本标记。

要解决“Cannot set property 'innerHTML' of null”错误,需要确保在声明 HTML 元素后将 JS 脚本标记放置在正文的底部。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <!-- ⛔️ BAD - script is run before span exists ⛔️ -->
    <script src="index.js"></script>

    <span id="name">John</span>
  </body>
</html>

JS 脚本标记添加在声明 span 元素的代码上方。 index.js 文件在创建 span 元素之前运行,因此我们无法从 index.js 文件访问该元素。

const el = document.getElementById('name');
console.log(el); // 👉️ null

// ⛔️ Cannot set properties of null (setting 'innerHTML')
el.innerHTML = 'Alice';

相反,必须将 JS 脚本标记移动到它尝试访问的 DOM 元素下方。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <span id="name">John</span>

    <!-- ✅ GOOD - span already exists ✅ -->
    <script src="index.js"></script>
  </body>
</html>

现在我们可以从 index.js 文件访问 span 元素。

const el = document.getElementById('name');
console.log(el); // 👉️ null

// ✅ Works
el.innerHTML = 'Alice';

现在 HTML 元素是在 index.js 脚本运行之前创建的,我们可以访问 DOM 元素并设置它的 innerHTML 属性。


总结

在以下情况下会发生“Cannot set property 'innerHTML' of Null”错误:

  • 尝试将 innerHTML 属性设置为空值(不存在的 DOM 元素)
  • 在声明 DOM 元素之前插入 JS 脚本标签

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便