【问题标题】:Cannot set property 'innerHTML' of null, stuck [duplicate]无法将属性“innerHTML”设置为 null,卡住 [重复]
【发布时间】:2017-10-08 21:54:19
【问题描述】:

我正在尝试改变

当我按下我的 h1 标签时的文本。这是我的 HMTL 代码:

   <DOCTYPE HTML>
<html>
    <head>
        <title>Javascript</title>
    </head>
    <body>
        <h1 id="tittel" title=“Når denne klikkes på, endres avsnittet”>Tittel </h1> <p id=”første” title=“Når denne klikkes på, sentreres tittelen”> Første avsnitt: original versjon.</p> 

    </body>
    <script src="2103.js"></script>
</html>

还有 JS:

var h1 = document.getElementById("tittel");
var avsnitt = document.getElementById("første");


function changeText() {
    avsnitt.innerHTML = "Første avsnitt: endret versjon";
}

h1.addEventListener("click", changeText());

【问题讨论】:

  • id=”første” 更改为 id="første" .. 我不信任 ” 字符..

标签: javascript


【解决方案1】:

您需要将changeText 分配为回调,而不是像这样使用addEventListener 时调用它:

h1.addEventListener("click", changeText);

当您的代码到达changeText() 部分时,它将调用函数,返回undefined(因为该函数没有返回值)并且不会注册回调。

addEventListener 的工作方式是期望给出一个函数(作为参考或文字) - 但在这里你给出的是 undefined

这就是上述工作的原因。它也可以与函数文字一起使用:

h1.addEventListener("click", function() { changeText(); });

【讨论】:

  • 这应该可以,但也可以将“引号”更改为“@Pogrindis 在评论中所说的”
  • 确实如此,但这不是问题所在。即使您在使用 addEventListener 时立即执行该函数,也应分配 avsnitt 并且不应发生此错误。我认为 Pogrindis 的评论更接近手头的实际问题,尽管您的回答可能很好地解决了 Joachim 的下一个问题。 ;)
  • 两个答案都解决了我的问题!太感谢了!为什么我不能有changetext())?我的印象是,在我点击 h1-tag 之前,该函数不会运行,但是 idk
  • 补充说明
  • 传奇。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 2014-08-25
  • 2013-08-16
  • 2021-05-23
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多