【问题标题】:Breaking out of a Javascript Loop打破 Javascript 循环
【发布时间】:2018-02-28 09:16:37
【问题描述】:

我在这个网站上看到过类似的问题,但我无法让它工作。我正在尝试通过 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;
                            }
                        }
                    }
                }

【问题讨论】:

标签: javascript


【解决方案1】:

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

for(x=0; x &lt; Num &amp;&amp; duplicate ; x++)

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

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

lg!

【讨论】:

    【解决方案2】:

    有一种方法可以跳出标签引用。对于下一个示例,您有三个标签(label1、label2、label3)。如果您自动使用“break label3”,您的代码将转到末尾(或您想要的标签)

    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!');
    

    【讨论】:

    • 由于某种原因,此代码不再检测到重复的字段值?
    猜你喜欢
    • 1970-01-01
    • 2016-01-01
    • 2022-12-15
    • 1970-01-01
    • 2021-03-11
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多