循环的Javascript应该循环两次,为什么只循环一次
Javascript for loop should loop twice, why only once?
我有一个最奇怪的问题,我下面有一个循环,应该循环两次(它的循环量应该与HTML块中的文本区域元素相同,所以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
的调用)为我解决了问题。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 为什么JavaScript在for循环为3时向所有4发出警报
- 为什么要返回'这'在导致循环的JavaScript原型中
- 为什么我的While循环不起作用
- 为什么AngularJS在每个摘要循环上都执行函数
- 为什么我们在ES2015中需要一个新的for循环结构,而我们已经有了for、forEach
- 为什么这个For循环会使浏览器实验室崩溃
- 为什么我使用javascript获得了一个无限的for循环
- 为什么我在下面的..of循环中得到意外令牌
- 为什么这个while循环不能使用AND逻辑运算符
- 为什么ng中的自定义指令在循环完成后重复运行
- 为什么这会造成一个无休止的循环并使我的浏览器崩溃
- 为什么不'当循环停止时
- JavaScript:为什么这个循环的优化使它变慢了
- 在 for 循环中,为什么 i++ 在第二次使用后变为 1
- 带有foo.js和foo.js.coffee(空)的Rails资产管道导致js循环.为什么?
- Javascript函数保持指数级循环.为什么
- for循环为什么以及何时忽略具有html集合的某些项
- jQuery函数循环:为什么夏奇拉在陌生人吻她时重复吻
- 美元.进入循环:为什么函数在递增之后执行