我有一个简单的html页面,body标签中没有代码。 我想通过javascript在主体标签中插入html。
我的javascript文件看起来像这样。
var Global={
UserWall:function(){
return "a very long html code";
}
};
var globalObject=Object.create(Global);
document.getElementsByTagName("body").item(0).innerHTML=globalObject.UserWall();
现在我希望在页面加载时将这个非常长的html代码自动插入到body标签中。 但它给了我在标题中提到的错误。为什么?
这也是创建基于jax的网站(没有页面重新加载)的正确方法,这意味着如果我调用服务器端脚本来更新这个非常长的html代码并将其附加到页面主体。
答案 0 :(得分:53)
在构建DOM之前,您几乎肯定会运行代码。尝试在window.onload
处理程序函数中运行代码(但请参阅下面的注释):
window.onload = function() {
// all of your code goes in here
// it runs after the DOM is built
}
另一种流行的跨浏览器解决方案是将<script>
块放在结束</body>
标记之前。根据您的需求,这可能是最佳解决方案:
<html>
<body>
<!-- all of your HTML goes here... -->
<script>
// code in this final script element can use all of the DOM
</script>
</body>
</html>
window.onload
将等到所有图像和子帧都已加载,这可能需要很长时间才能构建DOM。您也可以使用document.addEventListener("DOMContentLoaded", function(){...})
来避免此问题,但跨浏览器不支持此功能。底层技巧是跨浏览器,并在DOM完成后立即运行。答案 1 :(得分:5)
我已经完成了这里提到的所有解决方案。但是直到我使用Jquery制作了这个之后它们才起作用:
在我的HTML页面中:
> <div id="labelid" > </div>
当我点击一个按钮时,我把它放在我的JS文件中:
$("#labelid").html("<label>Salam Alaykom</label>");
答案 2 :(得分:4)
这是否在html的<head>
中运行?如果是这样,您需要确保<body>
标记实际上已首先加载。
您需要使用onload处理程序,例如:http://javascript.about.com/library/blonload.htm
答案 3 :(得分:0)
也许这会奏效:
document.getElementsByTagName("body")[0].innerHTML