[問題] insertBefore 方法

看板Ajax作者 (4545454554)時間8年前 (2016/08/17 09:34), 8年前編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
各位好 我的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

08/17 11:48, , 1F
你確定是一樣的...麻煩去看一下定義(parentNode)
08/17 11:48, 1F

08/17 21:13, , 2F
沒錯啊
08/17 21:13, 2F

08/17 21:13, , 3F
謝謝 我也覺得很奇怪 我把您上面的code貼到本機 用chrome跑看看 錯誤截圖如下 http://i.imgur.com/8FuEMJn.png
我也試了IE和firefox 也都有錯誤

08/18 10:59, , 4F
你是把js放到html上面了嗎?
08/18 10:59, 4F
對 我放到html上 我找到問題了 拍謝 我搞了個烏龍 我在<div id="top">的上面 還有一個element的id也是top 所以document.getElementById("top")抓到的是那個element insertBefore才會出錯 我一直沒注意到有兩個相同的id 太粗心了 謝謝大家 不好意思了 ※ 編輯: kisha024 (140.127.81.14), 08/18/2016 11:30:23
文章代碼(AID): #1NixyIRU (Ajax)
文章代碼(AID): #1NixyIRU (Ajax)