0

我正在尝试更新 div 标签的 innerHTML ,这里的简单应用程序可能有问题:

<!DOCTYPE html>
<html lang="en" xmlns=""http://www.w3.org/1999/xhtml"">
<head>
<title>Test</title>
 <script> 
    var element = document.getElementById("aaa");
    element.innerHTML = "1";
 </script>
</head>
<body>
<div id="aaa">aaa</div>
</body>
</html>

当我在浏览器中看到它时,我希望“aaa”为“1”。

任何想法?

谢谢

4

6 回答 6

2

在您的脚本正在执行的那一刻,JavaScript 没有#aaa可见的元素。

好的做法是把你的<script>标签放在前面</body>,这样脚本会在所有文档加载完毕后执行:

<!DOCTYPE html>
<html lang="en" xmlns=""http://www.w3.org/1999/xhtml"">
<head>
    <title>Test</title>
</head>
<body>
    <div id="aaa">aaa</div>

    <script> 
        var element = document.getElementById("aaa");
        element.innerHTML = "1";
    </script>
</body>
</html>
于 2013-04-24T10:02:30.647 回答
2

这是因为当你的脚本被执行时,元素aaa还没有被添加到 dom 中。

更安全的 dom 操作方法是在加载 dom 后进行,因为您可以使用 onload 事件处理程序。

另一个与 html 加载相关的技巧是将所有脚本放在页面底部。

您需要将脚本移动到加载

<html lang="en" xmlns=""http://www.w3.org/1999/xhtml"">
<head>
<title>Test</title>
 <script> 
    window.onload = function(){
        var element = document.getElementById("aaa");
        element.innerHTML = "1";
    }
 </script>
</head>
<body>
<div id="aaa">aaa</div>
</body>
</html>
于 2013-04-24T10:02:51.670 回答
0

尝试这个

<body>
<div id="aaa">aaa</div>
 <script> 
    var element = document.getElementById("aaa");
    element.innerHTML = "1";
 </script>
</body>

脚本代码应在加载带有名称的标签后执行'aaa' 否则使用onload事件函数调用代码

于 2013-04-24T10:03:19.960 回答
0

乍一看,您的代码非常好,只是有一些小问题:

Javascript 代码在解析器遇到代码块的那一刻被执行。这会导致您的代码在构造文档的实际正文之前执行,从而导致elementundefined不是指向正确的<div>.

要解决此问题,请将您的代码包装在一个函数中,然后在onload事件中调用它<body>,这将在所有内容加载后执行。

于 2013-04-24T10:03:54.590 回答
0

尝试使用

<script>
    window.onload = function(){
        document.getElementById("aaa").innerHTML = "1";
    }
</script>
于 2013-04-24T10:04:28.933 回答
0
 <!DOCTYPE html>
<html lang="en" xmlns=""http://www.w3.org/1999/xhtml"">
 <head>
<title>Test</title>

</head>
<body>
<div id="aaa">aaa</div>
</body>
 <script> 
 var element = document.getElementById("aaa");
 element.innerHTML = "1";
 </script>
 </html>

仅在加载元素后工作

于 2013-04-24T10:04:57.043 回答