使用此代码
var html='<div class="somediv"></div>';
var target=document.getElementById('contentArea');
target.appendChild(html);
我正在
Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
Uncaught TypeError: Cannot call method 'appendChild' of null
有什么建议吗?
答案 0 :(得分:3)
由于您没有提供您选择的DOM,因此无法确定,但我猜您在contentArea
元素存在之前运行了脚本。
如果是这样,请将脚本放在body
元素的末尾。
<head>
...
</head>
<body>
<div id="contentArea">
...
</div>
<script type="text/javascript">
// your script here
</script>
</body>
或者,只需将所有内容包装在内:
window.onload = function(){
// your script here
}
不直接相关,但您不应将HTML字符串传递给appendChild
。您应该创建一个DOM节点,并附加该节点。
var target=document.getElementById('contentArea');
target.appendChild(document.createElement('div')).className = 'somediv';
答案 1 :(得分:2)
在执行DOM操作时,在获取元素之前,请确保已经加载了这些元素。将脚本放在底部,就在</body>
标记应该执行
//all other HTML up here
<script>
var html=document.createElement('div');
html.className = 'somediv';
var target=document.getElementById('contentArea');
target.appendChild(html);
</script>
</body>
或者您可以使用window.onload
load
事件在文档加载过程结束时触发。此时,文档中的所有对象都在DOM中,并且所有图像和子帧都已完成加载。
window.onload = function() {
var html=document.createElement('div');
html.className = 'somediv';
var target=document.getElementById('contentArea');
target.appendChild(html);
}
答案 2 :(得分:1)
var target=document.getElementById('contentArea');
无法找到ID为contentArea
的元素。你能发布剩下的代码吗?
答案 3 :(得分:0)
我得到了同样的错误Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
试图将一个jQuery对象数组添加到DOM元素中。我发现规范允许你预先添加一个DOM元素数组,但不是一个jQuery对象数组。
阅读本文:http://bugs.jquery.com/ticket/11231了解详情