javascript - 为什么 document.body 在我的 javascript 中为空?

标签 javascript google-chrome

这是我的简短 HTML 文档。

为什么 Chrome 控制台会提示此错误:

"Uncaught TypeError: Cannot call method 'appendChild' of null"?

<html>
<head>
    <title>Javascript Tests</title>

    <script type="text/javascript">

        var mySpan = document.createElement("span");
        mySpan.innerHTML = "This is my span!";

        mySpan.style.color = "red";
        document.body.appendChild(mySpan);

        alert("Why does the span change after this alert? Not before?");

    </script>
</head>
<body>

</body>
</html>

最佳答案

主体此时尚未定义。通常,您希望在执行使用这些元素的 javascript 之前创建所有元素。在这种情况下,您在 head 中有一些 javascript使用 body 的部分.不酷。

您想将此代码包装在 window.onload 中处理程序或将其放置在 <body>之后标签(如 e-bacho 2.0 所述)。

<head>
    <title>Javascript Tests</title>

    <script type="text/javascript">
      window.onload = function() {
        var mySpan = document.createElement("span");
        mySpan.innerHTML = "This is my span!";

        mySpan.style.color = "red";
        document.body.appendChild(mySpan);

        alert("Why does the span change after this alert? Not before?");
      }

    </script>
</head>

See demo .

关于javascript - 为什么 document.body 在我的 javascript 中为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9916747/

相关文章:

javascript - 创建像 youtube channel 这样的图像 slider

javascript - 缩放网页然后单击后退按钮会更改上一页的背景大小

javascript - 提交表单后关闭书签

google-chrome - 谷歌浏览器不与 http2 进行多路复用

javascript - 在 d3.js 中缩放数据集

javascript - asp.net 在单击按钮时滚动到 anchor

java - 要下载哪个插件才能在 google chrome 上显示 java applet

javascript - Revolution slider 动画在 chrome 中不起作用,但在 firefox 中不起作用

google-chrome - 如何 "UTF-8 encode"我的 JavaScript 文件,以便 Google Chrome 可以在扩展程序中使用它们?

javascript - 强制地址栏显示在移动版 Chrome 应用中