作者kisha024 (4545454554)
看板Ajax
标题[问题] insertBefore 方法
时间Wed Aug 17 09:34:08 2016
各位好
我的HTML如下
<div id="top">
<span id="middle">foo bar</span>
</div>
如果script如下 可以正确执行
-------------------------------------------------
var newNode = document.createElement("span");
var child = document.getElementById("middle");
var parent = child.parentNode;
if (parent != null) {
parent.insertBefore(newNode, child);
}
------------------------------------------------
如果是这样 会出错 错误讯息是
Uncaught NotFoundError: Failed to execute 'insertBefore' on 'Node':
The node before which the new node is to be inserted is not a child
of this node.
-----------------------------------------------------
var newNode = document.createElement("span");
var child = document.getElementById("middle");
var parent = document.getElementById("top");
//var parent = child.parentNode;
if (parent != null) {
parent.insertBefore(newNode, child);
}
-----------------------------------------------------
我的疑问是 在此例 底下这两种写法 应该都是抓到 div#top
但为什麽 前者会出错呢?
var parent = document.getElementById("top");
var parent = child.parentNode;
谢谢
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1471397650.A.6DE.html
1F:→ lucky1lk: 你确定是一样的...麻烦去看一下定义(parentNode) 08/17 11:48
2F:→ Kenqr: 没错啊 08/17 21:13
谢谢 我也觉得很奇怪 我把您上面的code贴到本机 用chrome跑看看 错误截图如下
http://i.imgur.com/8FuEMJn.png
我也试了IE和firefox 也都有错误
4F:→ Kenqr: 你是把js放到html上面了吗? 08/18 10:59
对 我放到html上 我找到问题了
拍谢 我搞了个乌龙 我在<div id="top">的上面 还有一个element的id也是top
所以document.getElementById("top")抓到的是那个element
insertBefore才会出错 我一直没注意到有两个相同的id 太粗心了
谢谢大家 不好意思了
※ 编辑: kisha024 (140.127.81.14), 08/18/2016 11:30:23