1
爲什麼當我登錄特定節點列表中的所有節點的tagName
時,它會給我這個重複的undefined
反饋?爲什麼這個childNodes會給我這種奇怪的輸出?
這是即時從提取的節點代碼的一部分:
的index.html
<form name="contactForm" id="contactForm">
<div id="textInfo">
<ul>
<li>
<label for="firstName" class="mainLabel">First Name : </label>
<input type="text" name="firstName" id="firstName"/>
<span>This must be filled</span>
</li>
<li>
<label for="lastName" class="mainLabel">Last Name : </label>
<input type="text" name="lastName" id="lastName"></input>
<span>This must be filled</span>
</li>
<li>
<label for="email" class="mainLabel">E-mail : </label>
<input type="email" name="email" id="email"></input>
<span>This must be filled</span>
</li>
</ul>
</div>
的script.js
var myForm = document.forms["contactForm"];
eventUtil.add(myForm, "submit" , function(evt){
var firstName = myForm.elements["firstName"];
if(firstName.value == ""){
for(i=0; i < firstName.parentNode.childNodes.length ; i++){
console.log("childNodes[" + i + "]: " + firstName.parentNode.childNodes[i].tagName);
}
eventUtil.preventDefault(evt);
}
});
和輸出是:
childNodes[0]: undefined
childNodes[1]: LABEL
childNodes[2]: undefined
childNodes[3]: INPUT
childNodes[4]: undefined
childNodes[5]: SPAN
childNodes[6]: undefined
爲什麼重複輸出undefined
?
DOM節點之間的空白被大多數瀏覽器(IE除外)認爲是節點(textNode)本身。 – raina77ow 2012-08-17 16:15:04
那麼,有沒有辦法避免這種情況?除了在HTML中堆疊彼此相鄰的所有元素? – 2012-08-17 16:18:46
@Rafael你可以通過編程的方式刪除所有的空白文本節點,但是將它們堆疊起來會更好。 (你可以在下一行放一個斜角括號:元素中的空白不會做任何事情。) – 2012-08-17 16:21:07