document.getElementById()不起作用?

时间:2013-12-07 08:41:32

标签: javascript html

没什么好说的,

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

警告消息为null,而不是包含对象详情或类似内容的消息。

有什么问题?

7 个答案:

答案 0 :(得分:23)

将你的脚本放在实际元素之后,否则当你的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>

或者将您的脚本放在DOM ready事件中,以确保浏览器完全加载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>

答案 1 :(得分:6)

您需要在 html s读取/呈现后运行javascript ...

请改为尝试:

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

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

<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>

答案 2 :(得分:0)

这是因为您试图在文档的dom中创建之前访问按钮信息。将脚本放在正文的末尾,如下所示

<html>
    <body>

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

DEMO

答案 3 :(得分:0)

Javascript代码从上到下运行。在alert(x)行中,还没有input#btn1。 您可以使用:

window.onload = function() {
    var x = document.getElementById('btn1');
    alert(x);
}

答案 4 :(得分:0)

<script type="text/javascript">
     function call()
     {
        var x = document.getElementById('btn1').value.trim();//or use "=<%btn1.ClientID%>"
        alert(x);
     }
      </script>

将此功能onClientClick发送到您的按钮。

答案 5 :(得分:0)

首先执行script时,dom中没有加载id为#btn1的元素。因此在加载元素后执行script

像这样,     

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

答案 6 :(得分:0)

window.addEventListener('DOMContentReady',function(){
    var x = document.getElementById('btn1');
    alert(x);
};

如果您的浏览器支持,使用'DOMContentReady'事件优于'window.onload'。