getelementbyid 内部文本不起作用

Posted

技术标签:

【中文标题】getelementbyid 内部文本不起作用【英文标题】:getelementbyid innertext not working 【发布时间】:2013-12-02 23:03:11 【问题描述】:

您好,尝试使用 getelementbyid 和 innerText 但它在任何浏览器中都不起作用。当我打开错误控制台时,我收到以下错误消息

TypeError: 'null' 不是一个对象(评估 'document.getElementById("username").innerText = name')

这是我的代码:

<script>
alert("Using javascript","");
var name = prompt("Please enter your name?", "");
var course = prompt("What course are you studying?", "");
document.getElementById("username").innerText = name;
document.getElementById("usercourse").innerText = course;
</script>

我不知道为什么会收到 null 错误。

【问题讨论】:

您可能在引用的元素存在之前运行脚本。另请注意,Firefox 不支持 innerText,它在 FF 中是 textContent 确保您的网页包含具有 id 属性的元素 您的 html 在哪里。在引用它们之前,您的 HTML 中应该有 ID 为“username”和“usercourse”的元素... 【参考方案1】:

使用这个:

document.getElementById("username").value = name;
document.getElementById("usercourse").value = course;

这行得通。

【讨论】:

【参考方案2】:

让我通过在解释之前提供答案来解决您的问题...

Working Solution

HTML 更改...

USERNAME:<label id="username"></label>
         <br>
USER COURSE:<label id="usercourse"></label>

说明:现在 HTML 非常混乱,我相信不同的人可能会以不同的方式做到这一点,但是我想告诉你的是,如果一个元素不存在,你就不能引用它......

getElementByID 本身是不言自明的。在您的问题中,您在哪里看到您尝试引用的 2 个 id,因此控制台中出现“null”错误。您的 HTML 必须有这 2 个 ID。您可以从 javascript 动态添加元素,但这是另一个问题。

回到解决方案。

innerText 不适用于 Mozilla,因为它是 Internet Explorer 属性。它确实适用于 Chrome,但不适用于 FF。因此,您应该考虑使用

Node.textContent

【讨论】:

以上是关于getelementbyid 内部文本不起作用的主要内容,如果未能解决你的问题,请参考以下文章

画布文本单击不起作用。怎么修?

更改文本框输入的背景颜色在为空时不起作用

“富文本编辑器”只读不起作用

多个 GetElementByID 不起作用,如何循环 Javascript?

rmarkdown 中的内部链接不起作用

为啥从函数调用分配给属性 innerHTML 不起作用?