javascript中的递归循环,基于链接单击递增
我正在填充表单字段,并使用javascript递归循环提示用户通过它们 我遇到了一个递归无法按预期工作的问题 我有一个递归循环,通过6个输入字段提示用户 field1和field2按预期填充,但field3和field4一起开火,field5和field6一起开火 我认为这与全局变量和局部变量有关,也可能与loop()函数中的作用域有关,但我正在努力弄清楚这一点 JSFiddle: 单击“保存数据”按钮触发循环,您可以看到loop()函数迭代,并弹出确认弹出窗口指导用户 非常感谢为我指明正确方向的任何帮助javascript中的递归循环,基于链接单击递增,javascript,jquery,recursion,Javascript,Jquery,Recursion,我正在填充表单字段,并使用javascript递归循环提示用户通过它们 我遇到了一个递归无法按预期工作的问题 我有一个递归循环,通过6个输入字段提示用户 field1和field2按预期填充,但field3和field4一起开火,field5和field6一起开火 我认为这与全局变量和局部变量有关,也可能与loop()函数中的作用域有关,但我正在努力弄清楚这一点 JSFiddle: 单击“保存数据”按钮触发循环,您可以看到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);
}
你没有循环!!!
你只要绕两圈就行了
您应该如下更改循环函数:
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;
else
$("#text-submit").trigger('click')
}
请尝试以下方法:
var x = 0;
var fieldnames = ["field1", "field2", "field3", "field4", "field5", "field6"]
function loop(y) {
i = y;
if (i >= fieldnames.length) { return; }
confirm( 'Highlight the ' + fieldnames[i] + ' text' );
$('#' + fieldnames[i] + '').val('this is where i = ' + i);
return false;
}
$("#text-submit").on("click", function(e){
e.preventDefault();
if(i >= fieldnames.length - 1 ){ return false; }
i=i+1;
loop(i);
});
if( x === 0 ){
loop(x);
}
在这里演奏小提琴:
希望有帮助。谢谢!这很有帮助。看起来您刚刚添加了e.preventDefault();在单击函数中,我刚刚调整了字段值填充位置,用户需要选择数据,然后单击链接填充字段。我感谢你的帮助。