我正在填充表单字段并使用 javascript 递归循环通过它们提示用户。
我遇到了递归没有按预期工作的问题。
我有一个递归循环,通过 6 个输入字段提示用户。
field1 和 field2 按预期填充,但 field3 和 field4 一起触发,field5 和 field6 一起触发。
我认为这与全局变量与局部变量有关,或者可能与 loop() 函数内部的范围有关,但我正在努力弄清楚。
JSFiddle:http: //jsfiddle.net/9QtDw/5/
单击“保存数据”按钮以触发循环,您可以看到 loop() 函数迭代并带有指导用户的确认弹出窗口。
非常感谢任何为我指明正确方向的帮助。
var x = 0;
var fieldnames = ["field1", "field2", "field3", "field4", "field5", "field6"]
function loop(y) {
i = y;
if (i >= fieldnames.length) { // check to see if loop has run through the number of elements in the fieldnames array
return;
}
confirm( 'Highlight the ' + fieldnames[i] + ' text' );
console.log("outside on click function i=" + i);
//function to be called when button is clicked
$("#text-submit").on("click", function(){
//fieldinfo = $("#cs-ResultText").text();
$('#' + fieldnames[i] + '').val('this is where i = ' + i);
// increment i and recall the loop function for the next field
if(i >= fieldnames.length - 1 ){ return false; }
i=i+1;
console.log(i);
console.log("inside on click function i=" + i);
return loop(i); // the recusive call back into the loop
});
return false;
}
// only fire off the loop call on the first run through, after that it's called on #text-submit click
if( x === 0 ){
loop(x);
}