当前位置: 代码迷 >> Java Web开发 >> 这个JS当发现重复值的时候就应该停止,为什么它还继续运行啊该如何解决
  详细解决方案

这个JS当发现重复值的时候就应该停止,为什么它还继续运行啊该如何解决

热度:119   发布时间:2016-04-17 10:42:20.0
这个JS当发现重复值的时候就应该停止,为什么它还继续运行啊
如下是检查文本框是否存在重复值的,当发现重复值的时候就应该停止,为什么它还继续运行啊?
VBScript code
<script language="javascript">function test() {      var v1 = "";   var v2 = "";   var reRecords = new Array();    var LEN =  document.getElementById("qty").value; //文本框的个数   //通过两层 for 循环得到相同的元素,并加入到 reRecords 数组中    for(var i=1; i<=LEN ; i++) {        if(document.getElementById("weeknumber" + i) != null) {             v1 = document.getElementById("weeknumber" + i).value;        }        for(var j=i+1; j<=LEN ; j++) {             if(document.getElementById("weeknumber" + j) != null) {                   v2 = document.getElementById("weeknumber" + j).value;                   if(v1 == v2) {//alert("v2 = " + v2);                            reRecords[reRecords.length] = v2;                            break;                   }              }         }      }//取得相同元素结束//去掉 reRecords 数组中相同的元素,即:将含有相同元素的值用""来代替   for(var i=0; i<reRecords.length; i++) {        var s1 = reRecords[i];        if(s1 == "") {             break;        }        for(var j=i+1; j<reRecords.length; j++) {             var s2 = reRecords[j];             if(s1 == s2) {                  reRecords[j] = "";             }        }   }//用 "" 代替元素结束//数组中剩下的非 "" 元素就是最后想要的值,即:构造str的过程。   var str = "\r\n";   for(var i=0; i<reRecords.length; i++) {        if(reRecords[i] != "") {             str += reRecords[i];             str += "\r\n";                          alert("發現重复的值是:" + str);str = ""; //重置 str 为空             return false;        }   }//构造str 结束  }</script><form name="form1" onsubmit="test();" ><% for i=1 to 5 %><input type="text" name="weeknumber<%=i%>" id="weeknumber<%=i%>"/><br /><% next %><input name="qty" id="qty" type="hidden" value="<%= i-1%>" /><input type="submit" name="button" id="button" value="提交" /></form>


------解决方案--------------------
你的break只是中止了内层的for循环,外层的没有break。
------解决方案--------------------
直接return 不要 break;
------解决方案--------------------
当需要终止时 return false;就行了
------解决方案--------------------
楼主 你break只是跳出第一层循环,你说你的是两层嵌套,肯定退不出去么,就像8楼说的 ,你直接return了不就行了 。
------解决方案--------------------
按照层停止 break,按照全部停止,return.
  相关解决方案