2010-11-10 81 views
1

我有一個腳本,我正在努力,我有點失落。JavaScript搜索字符串短語

我抓住用戶輸入(使用jQuery),然後遍歷數組,並查看用戶輸入中是否存在數組中的短語。如果發現我彈出一個警告框告訴他們找到它。但由於某種原因,它不起作用。

代碼:

submit = false; 

      for(i in keyphrases_array) { 
       if(english_text.indexOf(keyphrases_array[i]) != -1) { 
        if(trans_text.indexOf(keyphrases_array[i]) != -1) { 
         submit = false; 
        } 
       } else { 
        submit = true; 
       } 
      } 

keyphrases_array是在其他功能設置全局陣列。

例子:

如果我陣列我有這句話的「Hello World」和我的劇本找到的Hello World在english_text變量它,然後檢查用戶提交的文本(trans_text)。如果在trans_text中找不到該短語,則該腳本應該返回false。

+0

您可能需要展示更多代碼。 – 2010-11-10 23:22:52

+0

你有什麼行爲?另外:你的indexOf檢查是看文本是否在字符串中,如果是'submit = false'。但是,根據你的問題,你應該在那裏返回'真實'嗎? – 2010-11-10 23:26:00

回答

3

首先,你不應該使用for/in遍歷數組。使用普通的for循環。

問題很可能是submit的值被循環中的下一次迭代覆蓋。如果這是該函數的結束,則應立即返回。

submit = false; 

for(var i = 0; i < keyphrases_array.length; i++) { 
    if(english_text.indexOf(keyphrases_array[i]) != -1) { 
      if(trans_text.indexOf(keyphrases_array[i]) != -1) { 
        // return immediately 
       return false; 
      } 
    } else { 
      submit = true; 
    } 
} 
return submit; 

,或者需要有更多的處理,你可以打破循環:

submit = false; 

for(var i = 0; i < keyphrases_array.length; i++) { 
    if(english_text.indexOf(keyphrases_array[i]) != -1) { 
      if(trans_text.indexOf(keyphrases_array[i]) != -1) { 
       submit = false; 
       break; 
      } 
    } else { 
      submit = true; 
    } 
} 

編輯:基於您的評論,似乎要return false如果該文本是而不是發現於trans_text。這意味着測試應該使用==而不是!=

 if(trans_text.indexOf(keyphrases_array[i]) == -1) { 
       // return immediately 
      return false; 
     } 
+0

非常感謝您的幫助!這已經解決了我的問題 – dennismonsewicz 2010-11-10 23:31:25

+0

@dennismonsewicz - 不客氣。 :O) – user113716 2010-11-10 23:32:50

1

如果文本僅爲英文版本,則以前的代碼將返回true,如果兩者均爲真,則只需傳遞true即可。 - 我理解正確嗎?

submit = false; 

       for(i in keyphrases_array) { 
        if(english_text.indexOf(keyphrases_array[i]) != -1 && trans_text.indexOf(keyphrases_array[i]) != -1) { 
          submit = true; 
         } 
        } else { 
         submit = false; 
        } 
       } 

編輯:交換真/假各地的匹配問題

+0

該腳本首先搜索英文,如果它找到該短語,則需要搜索翻譯後的文本。如果翻譯的文本不包含該短語,那麼它需要返回false。我有一些無法翻譯的關鍵短語。因此,這個腳本已經生下了大聲笑......感謝迄今爲止的幫助! – dennismonsewicz 2010-11-10 23:27:46

+0

我認爲帕特里克dw已經爲你排序。 – dpmguise 2010-11-10 23:29:19