2012-04-14 53 views
4

我真的不明白为什么这不起作用。我尝试了几个技巧,但我不明白。Javascript:不改变div innerHTML

<html> 
<head> 
<script type="text/javascript"> 
alert('Hey'); 
    var vText = document.getElementById("results"); 
     vText.innerHTML = 'Changed'; 
     alert(vText.innerHTML); 
</script> 
</head> 
<body> 
<div id="results"> 
hey there 
</div> 
</body> 
</html> 
+1

请把你的HTML代码,在最好的情况下提供的jsfiddle(的jsfiddle .net)这使我们更容易帮助你 – 2012-04-14 22:50:36

+0

@rami正在处理它,现在 – Ali 2012-04-14 22:51:17

+0

@Hoque我已经基本写入这个文本编辑并试图在Safari – Ali 2012-04-14 22:51:44

回答

12

这是工作,你可以在这里看到:

http://jsfiddle.net/gHbss/

你把你的JavaScript的HTML的div容器之后,这一点很重要。

+1

不适用于我....甚至没有在JSFiddle .. 。 – Deadpool 2018-01-23 16:02:39

1

该脚本必须放在div#结果后面或执行onload,否则在尝试访问它时该元素仍然是未知的。

4

您面临的问题是浏览器在渲染/处理页面时遇到JavaScript。此时它会将您的消息alert(),但相关元素,#resultsdiv不存在于DOM中,因此无法更改。

为了解决这个问题,你可以放置script在页面的结束,在结束</body>标记之前,或者在onload事件bodywindow的运行代码。

1

你需要调用这个脚本在onload事件 即

window.onload=function(){ 
//your code 
} 
0
<html> 
<head> 
<script type="text/javascript"> 
function onloadCall() 
{ 
    alert('Hey'); 
    var vText = document.getElementById("results");             
    vText.innerHTML = 'Changed'; 
    alert(vText.innerHTML); 
} 
</script> 
</head> 
<body onload="onloadCall()"> 
    <div id="results"> 
    hey there 
    </div> 
</body> 
</html> 

希望上面的代码显示了修复