看板 Web_Design 關於我們 聯絡資訊
※ 引述《Xphenomenon (啦 )》之銘言: : <body> : <form id = "test" method="POST"> : </form> : <script> : var foo = document.getElementById("test"); : if ( foo.hasChildNodes() ) { : alert(foo.childNodes.length); : } : </script> : </body> : 請問,我在 html body 裏面只有一個 form 的元素,在裏面 : 沒有放任何的資料,但是我使用 IE9, Firefox 12 去開啟網頁 : 的時候,foo.childNodes.length 的長度永遠是 1。 : 我去 alert foo.firstChild 的時候,回傳 [object Text]。 : 如果我在 form 裏面加一個 input 元素的話,回傳的卻是 3, : 這是爲什麽呢? : 麻煩大大為我解答一下,感謝。 :> 如果你的加了 <input /> 之後是有換行的 <form id="test" method="POST"> <input type="text" name="text" value="1" /> </form> 的話,就會有三個 childNodes 分別是 <form id="test" method="POST">\n <input type="text" name="text" value="1" />\n </form> \n 代表換行,不然第三個那邊不顯示的話沒辦法示意 = =" 你可以改用 foo.children.length 就會只有 1, 就是那個 input 看起來 childNodes 會取到所有的 element 純文字的話 childNodes[0].nodeType 會等於 1 input 的話 childNodes[1].nodeType 會等於 3 = document.ELEMENT 這是我用 firefox 15.0a1 + firebug 看得結果 在 chrome 21.0.1147.0 和 ie9 上面都是得到同樣的結果 如果你想知道為什麼的話… 可以去看看 javascript or DOM 的規範? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.64.11 ※ 編輯: chrisQQ 來自: 219.85.64.11 (05/23 14:01) ※ 編輯: chrisQQ 來自: 219.85.64.11 (05/23 14:02)
Xphenomenon:多謝! ^^ 05/24 12:47