当前位置: 首页 > 知识库问答 >
问题:

无法设置null的属性“inner html”

贲永思
2023-03-14

为什么我会得到一个错误或未捕获的TypeError:不能设置null的属性'innerhtml'?我以为我了解innerHTML并且在此之前使用过它。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>

<script type ="text/javascript">
    what();
    function what(){
        document.getElementById('hello').innerHTML = 'hi';
    };
</script>

</head>

<body>
<div id="hello"></div>
</body>
</html>

共有2个答案

麻阳
2023-03-14

让我们首先试着理解为什么它首先发生的根本原因。

为什么我会得到一个错误或未捕获的TypeError:不能设置null的属性'innerhtml'?

浏览器总是从上到下加载整个HTML DOM。在script标记(存在于HTML文件的head部分中)中编写的任何JavaScript代码,甚至在加载整个DOM(存在于body标记中的各种HTML元素标记)之前,都将由浏览器呈现引擎执行。head标记中的脚本试图访问id为hello的元素,甚至在该元素实际呈现在DOM中之前。因此,很明显,JavaScript无法看到元素,因此您最终会看到空引用错误。

你怎么能让它像以前一样工作?

您希望在用户第一次登陆您的页面时立即在页面上显示“Hi”消息。因此,当您完全确定DOM已完全加载并且helloid元素可访问/可用时,您需要将代码挂起。它可以通过两种方式实现:

  1. 重新排序脚本:这样,只有在包含helloid元素的DOM已经加载之后,脚本才会被激发。您只需将script标记移动到所有DOM元素之后,即body标记结尾处的底部,即可实现此目的。因为呈现是从上到下进行的,所以最终执行脚本时不会出现任何错误。

null

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Untitled Document</title>
    </head>
    
    <body>
    <div id="hello"></div>
    
    <script type ="text/javascript">
        what();
        function what(){
            document.getElementById('hello').innerHTML = 'hi';
        };
    </script>
    </body>
    </html>
李明贤
2023-03-14

您必须将hellodiv放置在脚本之前,以便在加载脚本时它存在。

 类似资料:
  • 我有一个简单的html页面,在body标记中没有代码。我想通过JavaScript在body标记中插入html。 我的javascript文件如下所示。 现在我想要这个很长的html代码在页面加载时自动插入到body标记中。但它给了我我在标题中提到的错误。为什么? 而且这也是创建基于ajax的网站的正确方法吗(不重新加载页面),这意味着如果我调用服务器端脚本来更新这个很长的html代码并将其附加到

  • 有一个错误,其中登录的用户将尝试更新他们的帐户用户名,但遇到一个错误。在我的一生中,我无法弄清楚为什么有时(可能有1/20的用户遇到这种情况)找不到当前的用户。只有登录后,用户才能访问此页面。错误有: 投掷;//未处理的“错误”事件 TypeError:无法设置null的属性“username” 错误似乎发生在这里:user.username=req.body.username;

  • 问题内容: 为什么会出现错误或未捕获的TypeError:无法将属性’innerHTML’设置为null?我以为我了解innerHTML并在以前使用过。 问题答案: 您必须将div放在脚本之前,以便在加载脚本时该div存在。

  • 我正在创建一个HTML页面,它是使用bootstrap构建的。下面是hello.js文件的最终HTML代码和代码: null null 当我使用submit(提交)按钮而不是alert(报警)单击按钮时,我得到的是错误 未捕获的TypeError:无法设置null的属性“onClick” 有谁能告诉我为什么我要面对这个错误吗??帮助解决它。

  • 我正在开发一个Grails应用程序。我有一个带有一些属性的Groovy bean。我试图使用setter方法实例化和设置Java类中的一些属性。虽然我没有任何错误,但属性不包含任何值。我尝试在调试模式下查看对象内容:groovy对象包含1个唯一字段(r$fields),其中包含一个空的HashMap。 新潮豆 Java代码 添加作为Java代码中的最后一条语句,我得到以下NPE Stacktrac

  • 问题内容: 因此,我在回答这个问题的同时一直在使用Python,但发现这是无效的: 由于 。但是,对于从对象继承的任何类,它都是有效的: 打印将按预期显示“ hello”。为什么会这样呢?在Python语言规范中,有哪些规定不能将属性分配给香草对象? 问题答案: 为了支持任意属性分配,对象需要一个:与对象关联的字典,可以在其中存储任意属性。否则,就无处放置新属性。 的实例object并没有随身携带