看板 Ajax 關於我們 聯絡資訊
各位好 我的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
Kenqr: https://jsfiddle.net/bmgLLre8/ 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