推 Xphenomenon:多謝! ^^ 05/24 12:47
※ 引述《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)