1

tagName特定のノードリスト内のすべてのノードをログに記録すると、この繰り返しundefinedのフィードバックが表示されるのはなぜですか?

これは私がノードを抽出しているコードの一部です:

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出力を繰り返し与えるのですか?

4

1 に答える 1

0
for(i=0; i < firstName.parentNode.childNodes.length ; i++){
    var currNode=firstName.parentNode.childNodes[i];
    if(currNode.nodeType==1){
        console.log("childNodes[" + i + "]: " + currNode.tagName);
    }                
}

nodeType(Node.ELEMENT_NODE == 1)をチェックして、要素のみを選択できます。

于 2012-08-17T16:26:37.293 に答える