2013-10-30 142 views
0

我的當前代碼有點問題。JavaScript搜索字符串包含?

我有一個文本框,我想在其中輸入一個搜索結果,並得到一個答案,以某種方式依賴於我所問。

它工作正常,只要我在我的文本框中只輸入一個單詞,如果我的數組持有該單詞它將被發現。

但是當我輸入完整的問題如:你多大了?

即使我的數組持有單詞:「舊」 它不會被發現。

我該如何糾正這種行爲?

function askQ(){ 
    var searchWord = new Array("age","old","color","fun","eyes", 
           "legs","eye","leg"); 
    var findme = document.getElementById('askBox').value; 

    if (searchWord.indexOf(findme) > -1) { 
    document.getElementById('bubble').innerHTML = "FOUND IT!"; 
} else { 
    document.getElementById('bubble').innerHTML = "SORRY!"; 
} 
+0

邊注:使用'[]'做一個磁盤陣列,而不是'新的Array()' –

+0

有無你嘗試用空格拆分「findme」? – Waclock

回答

2

您的代碼當前檢查整個輸入字符串是否在數組中。這意味着它正在檢查數組內是否包含「您多大年紀」 - 它不是。

您可能需要遍歷整個數組,並將數組中的每個字符串與輸入進行比較。

document.getElementById('bubble').innerHTML = "SORRY!"; 
for (var i = 0; i < searchWord.length; i++) { 
    if(findme.indexOf(searchWord[i])>-1){ 
     document.getElementById('bubble').innerHTML = "FOUND IT!"; 
    } 
} 
+0

謝謝,所有有用的提示!^_ ^ –

1

你可以做的是簡單地分裂findme空格:

words = findme.split(' '); 

之後,你可以只添加一個for和文字看在你的陣列字。

1

你應該檢查數組中的每個元素 嘗試這樣的事:

<div id="bubble">test</div> 
<br/> 
<button onclick="test()">click me</button> 

function test() { 
    var searchWord = new Array("age", "old", "color", "fun", "eyes", 
     "legs", "eye", "leg"); 
    var ph = "How old are you ?"; 
    for(var w in searchWord) { 
     if (ph.indexOf(searchWord[w]) > -1) { 
      document.getElementById('bubble').innerHTML = searchWord[w] + " - FOUND IT!"; 
     } 
    } 
} 
相關問題