在注释中标记为//错误的行的代码中。我收到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>
答案 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">
删除它解决了我的问题(我不记得它首先在我的页面上做了什么)