0

我当前的代码有一点问题。

我有一个文本框,我想在其中输入一个搜索框,并得到一个以某种方式依赖于我所问内容的答案。

只要我只在我的文本框中输入一个单词,它就可以正常工作,如果我的数组包含该单词,它将被找到。

但是当我输入一个完整的问题时:你几岁?

即使我的数组包含这个词:“旧”它也不会被找到。

我该如何纠正这种行为?

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!";
}
4

3 回答 3

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!";
    }
}
于 2013-10-30T17:47:39.560 回答
1

你可以做的只是用空格分割 findme :

words = findme.split(' ');

之后,您可以添加一个for并逐字查看您的数组。

于 2013-10-30T17:46:30.093 回答
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!";
        }
    }
}
于 2013-10-30T17:50:05.870 回答