【问题标题】:JavaScript search string contains?JavaScript 搜索字符串包含?
【发布时间】:2013-11-10 11:45:59
【问题描述】:

我当前的代码有点问题。

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

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

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

即使我的数组包含这个词:“旧” 找不到了。

如何纠正这种行为?

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

【问题讨论】:

  • 旁注:制作数组时使用[],而不是new Array()
  • 你试过用空格分割“findme”吗?

标签: javascript search contains


【解决方案1】:

您的代码当前检查整个输入字符串是否在数组内。这意味着它正在检查“你多大了”是否包含在数组中 - 它不是。

您可能需要遍历整个数组,并将数组中的每个字符串与输入进行比较。

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

【讨论】:

  • 谢谢,所有有用的提示! ^_^
【解决方案2】:

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

words = findme.split(' ');

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

【讨论】:

    【解决方案3】:

    你应该检查数组的每个元素 试试这样的:

    <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-06-26
      • 2023-02-02
      • 2021-06-12
      • 2019-05-17
      • 2019-07-08
      • 1970-01-01
      • 2013-08-14
      • 2011-05-25
      • 1970-01-01
      相关资源
      最近更新 更多