document.getElementById()不起作用?

Bil*_*lie 6 html javascript

没什么好说的

<html>
    <body>
        <script>
            var x = document.getElementById('btn1');
            alert(x);
        </script>
            <input type="button" id="btn1" value="Clickme" onclick="alert('1')" />
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

警报消息null而不是包含对象详细信息或类似内容的消息.

问题是什么?

Dar*_*rov 25

把你的脚本放在实际元素之后,否则当你的javascript代码运行时,DOM中还没有这样的元素.

<html>
    <body>
        <input type="button" id="btn1" value="Clickme" onclick="alert('1')" />
        <script>
            var x = document.getElementById('btn1');
            alert(x);
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

或者将脚本放在DOM ready事件中,以确保浏览器在尝试操作DOM之前完全加载DOM:

<html>
    <body>
        <script>
            window.onload = function() {
                var x = document.getElementById('btn1');
                alert(x);
            };
        </script>
        <input type="button" id="btn1" value="Clickme" onclick="alert('1')" />
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

  • 为什么有人会对此进行投票?这是一个明确的解决方案.. (3认同)
  • 为这个不错的解决方案投票?为什么?? (2认同)

Ser*_*gio 6

你需要在html读取/渲染运行javascript ...

试试这个:

<html>
    <body>
        <input type="button" id="btn1" value="Clickme" onclick="alert('1')" />
        <script>
            var x = document.getElementById('btn1');
            alert(x);
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

或者您可以添加窗口加载功能,以便脚本仅在页面加载后运行.喜欢:

<html>
    <body>
        <script>
            window.onload = function(){
                var x = document.getElementById('btn1');
                alert(x);
            }
        </script>
            <input type="button" id="btn1" value="Clickme" onclick="alert('1')" />
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)