开发者问题收集

innerHTML 为空错误 [重复]

2018-05-21
325

使用 console.log 我能够看到来自另一个页面的值,但是当我使用 document.getElementById('abc').innerHTML = xyz.age; 放置此值时,它给出了错误 Uncaught TypeError: Cannot set property 'innerHTML' of null

我的 JS

xyz = JSON.parse(sessionStorage.getItem("details"));
document.getElementById('abc').innerHTML = xyz.age; //getting error from here
console.log(xyz.age);

你们能帮帮我吗

2个回答

此示例使用您的代码有效,您可能在 dom 完全加载之前执行了脚本?尝试将您的代码包装在 document.addEventListener("DOMContentLoaded") 中:

document.addEventListener("DOMContentLoaded", function() {
  // code...
});
document.addEventListener("DOMContentLoaded", function() {
  xyz = { age: 24 }; // Mock data from localstorage
  document.getElementById('abc').innerHTML = xyz.age;
  console.log(xyz.age);
});
<div id="abc"></div>
Chase DeAnda
2018-05-21

问题不是 xyz,而是 document.getElementById('abc')。脚本执行时找不到 'abc',要么是元素不存在,要么是脚本在文档准备好之前运行。

如果是后者,您可能需要在文档加载后在回调函数中执行脚本。请参阅 https://www.w3schools.com/jsref/event_onload.asp

Ian Luo
2018-05-21