document.getElementbyId()返回null

时间:2011-08-22 18:33:08

标签: javascript dom

在注释中标记为//错误的行的代码中。我收到Javascript错误说:“无法读取'null'的属性样式”。我不知道它无法找到对象。我曾经想过并尝试过一切。请帮忙。这是代码:

<script type="text/javascript">

    $.getJSON('https://graph.facebook.com/647045111?fields=first_name&<%= Session["Token"] %>',

    function (data) {
        $('#userName').html(data.first_name);
    });

    document.getElementById('connectedUnregistered').style.display = 'block'; //Error

</script>

    <div id="userName"></div>

    <div id="disconnected" style="display:block;">

     <div id="heading">Facebook login</div> 

     <a href="Account/FacebookLogin" id="loginButton"><div id="fbConnectButton"><img src="/Content/Images/fbconnect.png"/></div></a>    

    </div>

     <div id="connectedUnregistered" style="display:none">

     <div id="heading">Register Now</div> 



    </div>

9 个答案:

答案 0 :(得分:24)

您正在实际创建<div id="connectedUnregistered" />之前执行您的JavaScript代码。

另请注意,您未使用相应的<div>关闭</div>

将您的javascript代码移到HTML下方的部分。或者在页面加载完成后执行它。如果你使用的是JQuery,你可以这样做:

<script>

    $(document).ready(function() {

        ... your code ...

    });
</script>

答案 1 :(得分:3)

将您的脚本放在HTML文档的末尾而不是开头,看看是否能解决问题。

JavaScript无法编辑DOM元素,因为它尚未创建。

答案 2 :(得分:3)

也许尝试将此代码放在

$(document).ready(function(){

//Code

});

答案 3 :(得分:1)

此外,如果您使用document.write代码的某些部分,则获取null非常常见。

答案 4 :(得分:0)

脚本在元素加载之前尝试获取元素。将脚本放在元素后面,或将其置于加载或就绪事件中。

答案 5 :(得分:0)

代码在创建元素之前执行。由于您使用的是jquery,只需将其包装在document.ready:

$(function(){
    // code goes here
});

这将在创建DOM后执行。

答案 6 :(得分:0)

在DOM完全可用且调用失败之前,javascript代码正在运行。请尝试以下

$(document).ready(function() {
  document.getElementById('connectedUnregistered').style.display = 'block'; //Error
}

答案 7 :(得分:0)

此错误也可能表示该元素没有ID。

<input type="text" name="myelem" />

确保您的元素有ID。

<input type="text" name="myelem" id="myelem" />

答案 8 :(得分:0)

在我的情况下,这是因为在jsp / html(无论)文件的开头有这一行:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

删除它解决了我的问题(我不记得它首先在我的页面上做了什么)