javascript - 记录数组中匹配字符串的所有实例 - JavaScript

标签 javascript

我有一个数组,我想查找在文本框中键入的匹配字符串的所有实例。

当前代码可作为 fiddle 使用 - https://jsfiddle.net/Mithun6319/Lzmekhph/

var colors = ['Red', 'Blue', 'Black', 'Green', 'Grey'];

var boxHandeler = document.getElementById('box');

function textComplete(text) {
    boxHandeler.addEventListener('keyup', function (ev) {
       if (this.value.length >= 2) {
          var boxData = this.value;
          //console.log(boxData);
          for(i=0;i<colors.length;i++){
              while(colors[i].match(boxData)){
                  console.log[i];
              }
          }
       }
   });
}

最佳答案

如果您想要的是一个自动完成文本框,正如您在评论中提到的那样。您可以使用datalist

<input list='colors' />

<datalist id="colors">
  <option value="Red">
  <option value="Blue">
  <option value="Black">
  <option value="Green">
  <option value="Grey">
</datalist>

您可以从下拉列表中选择或键入您将看到过滤的结果

以下是如何做到这一点javascript。这是您的代码的修改版本

<input type="text" id="box" onkeyup="matchThis(this.value)"/>

<script>
var colors = ['Red', 'Blue', 'Black', 'Green', 'Grey'];

var boxHandeler = document.getElementById('box');

function matchThis(value){
        if (value.length >= 2) {
            var boxData = value;
            //console.info("Search String "+boxData);           
            var pattern = new RegExp(boxData,'gi');
            for(i=0;i<colors.length;i++){               
                if(colors[i].match(pattern)){
                    console.warn(colors[i]);
                }               
            }
        }
}
</script>

您的代码存在很多问题。首先,当找到匹配时,您调用无限循环(如@ananth 的评论中所述)。您试图以数组形式访问 console.log

console.log[i];

而不是

console.log(i);

由于某种原因 fiddle 无法工作,因此请在实际环境中尝试一下

关于javascript - 记录数组中匹配字符串的所有实例 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33937351/

相关文章:

javascript - 如果选择了当前年份,则仅在 Select 元素中显示当前和 future 月份

javascript - 如何在 Mongoose 模式中添加子文档

Javascript:覆盖日期 - 如何获取传递给构造函数的值

javascript - 如何延迟垂直选项卡上的鼠标悬停事件

javascript - 尝试为css中的多个图像制作不同的悬停动画

javascript - TypeScript 新手,尝试使用 Sequelize

javascript - 在哪里可以找到使用 Crockford 方法进行原型(prototype)继承的大型 JavaScript 项目的示例?

javascript - Ajax 成功函数未运行

JavaScript - Date 实例的 Date.UTC 结果

javascript - _.template 不工作 - backbone.js