打破Javascript循环

时间:2017-09-19 14:21:19

标签: javascript

我在这个网站上看到过类似的问题,但是我无法让它发挥作用。我试图通过Javascript检测输入框中的重复条目 - 但我希望在输入重复时循环中断。我有那个部分工作,但循环继续运行,它创建一个用户无法摆脱的无限循环。我试图打破循环并让用户重新输入不同的值。

function checkDuplicates() {
        var numFlds = <cfoutput>#form.UnitCount#</cfoutput>;
            for (var x=1; x<=numFlds; x++) {
                for (var y=x+1; y<=numFlds; y++) {
                    if (document.getElementById('SN'+y).value !== '') 
                        if (document.getElementById('SN'+x).value == document.getElementById('SN'+y).value) {
                            alert('Duplicate Serial Number Entered!');
                                break;
                            }
                        }
                    }
                }

2 个答案:

答案 0 :(得分:1)

你可以声明一个bool duplicate found并检查它的每个循环。 找到一个时声明duplicate = true

for(x=0; x < Num && duplicate ; x++)

当你找到一个时,循环停止,下一个停止,下一个也停止。而且你出去了。

如果你想记住你离开的地方,可以保存相应的x以保存你离开的地方。

LG!

答案 1 :(得分:0)

有一种方法可以跳转到标签参考。对于下一个示例,您有三个标签(label1,label2,label3)。如果你使用&#39; break label3&#39;自动将您的代码发送到最后(或者您想要的标签)

var numFlds = <cfoutput>#form.UnitCount#</cfoutput>;
label1:
for (var x=1; x<=numFlds; x++) {
    label2:
    for (var y=x+1; y<=numFlds; y++) {
        if (document.getElementById('SN'+y).value !== '') {
            if (document.getElementById('SN'+x).value == document.getElementById('SN'+y).value) {
                alert('Duplicate Serial Number Entered!');
                break label3;
            }
        }
    }
}
label3:
console.log('Finish!');