作者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://www.ptt.cc/bbs/Ajax/M.1471397650.A.6DE.html
→ lucky1lk: 你確定是一樣的...麻煩去看一下定義(parentNode) 08/17 11:48
→ Kenqr: 沒錯啊 08/17 21:13
謝謝 我也覺得很奇怪 我把您上面的code貼到本機 用chrome跑看看 錯誤截圖如下
http://i.imgur.com/8FuEMJn.png
我也試了IE和firefox 也都有錯誤
→ 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