2011-08-11 29 views
37

我收到了一個錯誤,指出這有一個非法的continue語句。 我有一個單詞列表來檢查表單驗證,並且問題是它是否將一些子字符串與保留字匹配,所以我創建了另一個乾淨的單詞數組來匹配。如果一個乾淨的詞匹配繼續否則,如果它匹配保留字提醒用戶

$.each(resword,function(){ 
     $.each(cleanword,function(){ 
      if (resword == cleanword){ 
       continue; 
      } 
      else if (filterName.toLowerCase().indexOf(this) != -1) { 
       console.log("bad word"); 
       filterElem.css('border','2px solid red'); 
       window.alert("You can not include '" + this + "' in your Filter Name"); 
       fail = true; 
      } 
     }); 
    }); 

回答

80

continue語句是罰款正常的JavaScript循環,但jQuery的each方法要求您改爲使用return語句。返回任何不是假的,它將表現爲continue。返回false,它會表現爲break

$.each(cleanword,function(){ 
    if (resword == cleanword){ 
     return true; 
    } 
    else if (filterName.toLowerCase().indexOf(this) != -1) { 
     //...your code... 
    } 
}); 

欲瞭解更多信息,請參閱jQuery docs

+1

實際上,jQuery不會鬆散地檢查它,如果它不是明確的false('=== false'),那麼它將繼續。所以你可以做一個'return;'並且它會返回undefined,它將作爲一個繼續。 –

+0

@鮑勃 - 謝謝,我不是100%確定它是否必須是明確的錯誤,或者只是虛假。 –

3

您正在使用continue這意味着對於javascript for循環內的jquery each處理程序。這不起作用。雖然jquery each中的continue相當於返回一個非錯誤值。

if (resword == cleanword){ 
    return true; 
} 
3

在jQuery.each循環,你必須要麼返回true或false改變循環interations:通過使

我們可以在一個特定的迭代突破$。每()循環回調函數返回false。返回非錯誤與for循環中的 continue語句相同;它會立即跳到下一個 迭代。

所以,你需要做的是:

$.each(resword,function(){ 
    $.each(cleanword,function(){ 
     if (resword == cleanword){ 
      return true; 
     } 
     else if (filterName.toLowerCase().indexOf(this) != -1) { 
      console.log("bad word"); 
      filterElem.css('border','2px solid red'); 
      window.alert("You can not include '" + this + "' in your Filter Name"); 
      fail = true; 
     } 
    }); 
}); 
-1

不能使用繼續存在。無論如何,它會自動繼續,只是刪除 - 我認爲它應該按照您的描述工作。

0

在Jquery中我們每次調用函數的時候我們每次調用一個函數,所以continue都不行,我們需要return true才能從函數中跳出來。我們可以使用continue