【问题标题】:How to fix Uncaught TypeError: Cannot set property 'innerHTML' of null in javascript in wordpress?如何修复未捕获的 TypeError:无法在 wordpress 中的 javascript 中设置 null 的属性“innerHTML”?
【发布时间】:2020-10-31 18:31:09
【问题描述】:

const printSentence = (id, sentence, speed = 50) => {
  let index = 0;
  let element = document.getElementById(id);
  
  let timer = setInterval(function() {
    const char = sentence[index];
    
    if (char === '<') {
      index = sentence.indexOf('>', index);  // skip to greater-than
    }
    
    element.innerHTML = sentence.slice(0, index);
    
    if (++index === sentence.length) {
      clearInterval(timer);
    }
  }, speed);
} // printSentence

printSentence(
  'one',
  '<h2>Wordpress</h2>',
  50
);
&lt;div id="one"&gt;&lt;/div&gt;

但我在控制台中看到一个错误:

未捕获的类型错误:无法将属性“innerHTML”设置为 null

我尝试了window.onload,但它不起作用
有关如何在控制台中解决此问题的任何提示?

【问题讨论】:

  • id 是什么 - 你的 html 是什么样的
  • 当您调用printSentence('one', ...) 时,没有id 为one 的元素。我们应该如何解决这个问题?
  • 不,我只是忘了我有一个 id 为 one 的 div
  • 我的评论仍然有效。当您调用 printSentence('one', ...) 时,DOM 中没有具有该 ID 的元素。否则.getElementById('one') 不会返回null
  • 你可以在我的wordpress网站上看到上面的sn-p在google chrome中的控制台显示错误,但是在stackoverflow sn-p的控制台中它没有显示任何错误

标签: javascript wordpress console


【解决方案1】:

错误信息告诉你 ELEMENT 为空

这意味着 let element = document.getElementById(id); 返回 null。 (添加一个 console.log 元素,如果你愿意,可以检查)。

最可能的原因是没有 ID 为“one”的标签。

查看正在运行的页面的 HTML

确保它有一个 id 为“one”的标签。 出现这种情况的最常见原因是 DOM 在 javascript 运行时不包含 id 为“one”的元素。

这就是为什么最好使用 图标来输入您的代码,以便其他人可以轻松地复制它。

现在我们有了你的 sn-p,它似乎工作正常

它在输出窗口中显示缓慢出现的文本。在控制台日志中,我看到一条不相关的错误消息,可能与安全有关。

Uncaught DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame.
    at Object.vAPI.bootstrap (chrome-extension://cjpalhdlnbpafiamejdnhcphjbkeiagm/js/contentscript.js:1755:46)
    at chrome-extension://cjpalhdlnbpafiamejdnhcphjbkeiagm/js/contentscript.js:1764:6

如果它也适用于您,但您担心您的您描述的错误消息,您为什么不这样做:

改变

element.innerHTML = sentence.slice(0, index);

if(element){
  element.innerHTML = sentence.slice(0, index);
} else {
  console.log("Cannot do element.innerHTML. The current value of element is ",element,". Index is currently ",index)
}

【讨论】:

  • 我有一个 id 为 one 的 div
  • 你认为你有,但在 Javascript 运行时它并不存在于 DOM 中。使用 Stack Overflow 编辑器中的“”图标添加您的代码,包括 HTML 和 Javascript,以便我们可以复制它。
  • 谢谢你能看到上面的sn-p好吗??
  • 啊,我发现问题出在 WordPress 中,而不是在 JS 或 HTML 中。您现在可以看到原始评论者是正确的吗?您最初显示或当前显示的代码没有任何问题。这就是为什么提供可重现的可运行代码,而不仅仅是屏幕截图或描述至关重要的原因。尝试我在答案中添加的最后一部分,然后报告您所看到的。也许 Wordpress 在时间或事物名称方面做了一些奇怪的事情?我添加的代码将帮助您识别 Wordpress 对您的程序所做的工作。
猜你喜欢
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2023-04-09
  • 2020-12-29
  • 2021-12-26
  • 1970-01-01
  • 2017-10-29
  • 2020-12-19
相关资源
最近更新 更多