JavaScript for loop应该循环两次,为什么只有一次?

| 我有一个最奇怪的问题,我下面有一个循环,该循环应该循环两次(它应该循环的次数与HTML块中存在textarea元素的量相同,所以为2),但是它只能循环一次? 您为什么认为这种情况正在发生?
  // This is the test HTML that should make the loop further below loop twice
  <div class=\"inputPanel\">  
     <div class=\"a\"> 
     <p class=\"label\">Staff Link</p> 
     <textarea class=\"updatable~p\"> abcdef </textarea>    
     <p> blah blah </p>
     <div class=\"b\"> defgh </div>
     <p class=\"label\">Staff Info</p>
     <textarea class=\"updatable~p\"> erdeffde </textarea>
     <div class=\"footer\"> end </div>
  </div>


function convertToDisplayHTML( str )
{
    try
    {
                       // Algorithm:
        // get all code from iframe 
        // extract all textarea elements
        // if textarea[i].class.match( \"updable\" )
        /* {
              var eleType = textarea[i].class.split(\"~\");
              eleType     = eleType[ eleType.length-1 ];
              change elements type to eleType
              change elements value to textareas value
           }

           delete all elements that are <p>\'s & have the class=\"label\"

           return string
        */

        var textareas = document.getElementById(\"inputPanel\").getElementsByTagName(\"textarea\");
        var labels    = getElementsByClassName( \"label\", document.getElementById(\"inputPanel\") );
        alert(textareas.length);  // says \"2\"

                       // THIS IS THE LOOP: it should loop 2 times not 1
        for ( var i=0; i<textareas.length; i++ )
        {
            alert(\"Loop 1 \" + textareas[i].className);
            if ( textareas[i].className.match( \"updatable\" ) )
            {
                var className = \"\";
                var eleType   = textareas[i].className.split( \"~\" );
                eleType       = eleType[ eleType.length-1 ];

                if ( labels.length > 0 )
                {
                    var className = \"updater~\"+labels[0].innerHTML;
                    labels[0].parentNode.removeChild( labels[0] );
                    labels.shift();
                }

                var newObj  = changeObjectType( textareas[i], eleType, className );
            }
            alert(\"A\");
        }

        return document.getElementById(\"inputPanel\").innerHTML;
    }
    catch (ex)
    {
        alert(\"In convertToDisplayHTML(): \"+ex);
        return \"FAILED\";
    }
}
    
已邀请:
labels
没有称为
shift
的功能。 那就是我遇到错误的地方。注释掉(以及尚未定义的对
changeObjectType
的调用)对我来说解决了这个问题。     

要回复问题请先登录注册