2011-08-22 102 views
11

在標記爲//註釋中的錯誤的代碼中。我得到Javascript錯誤說:「不能讀取'null'的屬性樣式」。我不知道它無法找到對象。我曾想過並嘗試過一切。請幫忙。這裏是代碼:document.getElementbyId()返回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> 

回答

20

在執行您的javascript代碼之前,<div id="connectedUnregistered" />實際上已創建。

另請注意,您並未關閉<div>並且對應的</div>

因此,將您的JavaScript代碼移至HTML下面的一部分。或者在頁面加載完成後執行它。如果你正在使用JQuery,你可以這樣做:

<script> 

    $(document).ready(function() { 

     ... your code ... 

    }); 
</script> 
2

把你的腳本放在HTML文檔的末尾而不是開頭,看看是否能解決問題。

JavaScript無法編輯DOM元素,因爲它尚未創建。

0

腳本試圖在元素加載之前獲取元素。將腳本放置在元素之後或放入加載或準備事件中。

3

也許嘗試將這個代碼在

$(document).ready(function(){ 

//Code 

}); 

0

之前被創建的元素的代碼執行。由於您使用的是jQuery,因此只需將其包裝在document.ready中:

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

這將在DOM創建後執行。

0

在DOM完全可用且調用失敗之前,JavaScript代碼正在運行。請嘗試以下代碼

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

這個錯誤也可能表明該元素沒有ID。

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

確保您的元素具有ID。

<input type="text" name="myelem" id="myelem" /> 
0
在我的情況

,這是因爲其在JSP/HTML的開始此行的(其他)文件:

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

刪除它解決了這個問題對我來說(我不記得是什麼它在我的頁面上做的第一個地方)

1

此外,如果在您使用的代碼的某些部分document.write它是非常普遍的得到null。

+1

document.write是我的問題 - 謝謝! – DavidJ

相關問題