我有一个简单的html页面,body标签中没有代码.我想通过javascript在body标签中插入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();
Run Code Online (Sandbox Code Playgroud)
现在我希望在页面加载时将这个非常长的html代码自动插入到body标签中.但它给了我在标题中提到的错误.为什么?
并且这也是创建基于jax的网站(没有页面重新加载)的正确方法,这意味着如果我调用服务器端脚本来更新这个非常长的html代码并将其附加到页面正文.
aps*_*ers 53
几乎可以肯定,在构造DOM之前运行代码.尝试在window.onload
处理函数中运行代码(但请参阅下面的注释):
window.onload = function() {
// all of your code goes in here
// it runs after the DOM is built
}
Run Code Online (Sandbox Code Playgroud)
另一种流行的跨浏览器解决方案是将<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>
Run Code Online (Sandbox Code Playgroud)
window.onload
将等到所有图像和子帧都已加载,这可能是构建DOM后的很长一段时间.您也可以使用document.addEventListener("DOMContentLoaded", function(){...})
以避免此问题,但跨浏览器不支持此功能.底层技巧是跨浏览器,并在DOM完成后立即运行.小智 5
我已经完成了这里提到的所有解决方案.但是在我使用Jquery创建这个之前它们没有工作:
在我的HTML页面中:
> <div id="labelid" > </div>
Run Code Online (Sandbox Code Playgroud)
当我点击一个按钮时,我把它放在我的JS文件中:
$("#labelid").html("<label>Salam Alaykom</label>");
Run Code Online (Sandbox Code Playgroud)