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