将匹配字符串的所有实例记录在一个数组中-JavaScript
Log all instances of a matched string in a array - JavaScript
我有一个数组,我想找到在文本框上键入的匹配字符串的所有实例。
当前代码可用作fiddy-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不起作用,所以请在实际环境中尝试它。
相关文章:
- 我应该如何从xml文件构建一个javascript页面
- 有没有一个javascript图形绘制库可以进行气球树布局
- 如何将一个JavaScript函数回调为多个函数
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 多次调用另一个javascript函数中的javascript函数
- HTML外部javascript加载另一个javascript
- 在一个javascript文件中为整个网站创建标签
- 在任何AJAX调用之前触发一个javascript函数
- 如何用另一个Javascript更改Javascript函数值
- 动态创建一个javascript/jquery多级数组
- 将变量值从一个javascript传递到另一个javascript
- 获取一个javascript对象attr's
- 是一个javascript bookmarklet,可以设置破坏跨域安全的域cookie
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- 添加一个javascript函数来下载elfinder上的事件
- 有没有一个Javascript代码可以看到你的缓存有多满
- 使用jenkins从不同文件夹中的文件构建一个javascript文件
- 是否有一个javascript库来解析简单的查询
- 一个javascript实现base64图像编码并将结果写入文本文件
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器