Javascript 无法通过 id 找到元素?

IT技术 javascript getelementbyid
2021-01-12 03:38:11
<html>
<head>
    <title>Test javascript</title>

    <script type="text/javascript">
        var e = document.getElementById("db_info");
        e.innerHTML='Found you';
    </script>
</head>
<body>
    <div id="content">
        <div id="tables">

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

如果我使用alert(e);它会出现null....显然我没有在屏幕上看到任何“找到你”。我究竟做错了什么?

5个回答

问题是您试图在元素存在之前访问它。您需要等待页面完全加载。一种可能的方法是使用onload处理程序:

window.onload = function () {
    var e = document.getElementById("db_info");
    e.innerHTML='Found you';
};

不过,大多数常见的 JavaScript 库都提供了一个 DOM 就绪事件。这更好,因为也window.onload等待所有图像。在大多数情况下,您不需要这样做。

另一种方法是将脚本标记放在结束标记之前</body>,因为它前面的所有内容都在执行时加载。

+1 用于 window.onload 和匿名函数 ^^
2021-03-30 03:38:11

浏览器如何知道何时运行脚本标签内的代码?因此,要在窗口完全加载后运行代码,

window.onload = doStuff;

function doStuff() {
    var e = document.getElementById("db_info");
    e.innerHTML='Found you';
}

另一种选择是<script...</script>在结束</body>标签之前保留您标签。

该脚本在构建主体的 DOM 之前执行。将其全部放入一个函数中并从onloadbody 元素的 中调用它

在 onload 事件中运行代码,或者在关闭body标签之前你试图找到一个在你做的那一刻不存在的元素。

在元素存在之前调用脚本。

您应该尝试以下方法之一:

  1. 将代码包装到一个函数中并使用主体 onload 事件来调用它。
  2. 将脚本放在文档的末尾
  3. 在脚本标签声明中使用 defer 属性