我每隔1秒钟就会刷新一次时间。我尝试使用元素<div id="container">
<div id="kv_load" style="display:none" >
<img class="mark" src="img/favicon.ico" id="test"
ng-style="{'position': 'absolute','top': (x + 300) + 'px'}">
</div>
</div>
中的文本为该显示添加前缀。但是,我不断收到错误“Uncaught TypeError:无法读取属性'innerHTML'的null”错误。但是,divMessage
的文本在文档就绪函数divMessage
中没有任何问题地分配。那么,这里发生了什么?
($function())
元素的定义如下。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript">
var myVar = setInterval(myTimer, 1000);
var loaded = false
$(function(){
....
$.post(window.location, {
....
}).success(function(data){
// I assign divMessage text here without any problems!
loaded = true
});
function myTimer()
{
var d = new Date()
var dateTime = d.toLocaleTimeString()
var divMessage = ''
if (loaded) {
// Uncaught TypeError: Cannot read property 'innerHTML' of null" error here!
divMessage = document.getElementById("divMessage").innerHTML
document.getElementById("div2").innerHTML = "<span style=\"color:green\">" +
divMessage + ", " + dateTime + "</span>";
}
}
</script>
</head>
答案 0 :(得分:1)
更正toLocaleTimeString
的拼写错误并删除额外的})
大括号
var myVar = setInterval(myTimer, 1000);
var loaded = false;
$(function() {
loaded = true
});
function myTimer() {
var d = new Date()
var dateTime = d.toLocaleTimeString();
var divMessage = ''
if (loaded)
divMessage = document.getElementById("divMessage").innerHTML
document.getElementById("div2").innerHTML = "<span style=\"color:green\">" +
divMessage + ", " + dateTime + "</span>";
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div id="divMessage"><span style="color:yellow">some text</span>
</div>
<div id="div2"><span style="color:yellow">some text</span>
</div>
&#13;
答案 1 :(得分:0)
如果页面加载时DOM中不存在divMessage,getElementById将返回null。
getElementById()不会搜索文档中的元素。在创建元素并为其分配ID时,必须先使用Node.insertBefore()或类似方法将元素插入到文档树中,然后才能使用getElementById()
访问它