我正在处理待办事项列表应用程序,用户可以在其中将用户添加到列表项目中以进行列表项目的搜索以及搜索列表项目。下面我正在研究搜索功能。现在发生的事情是,我将一个li项添加到页面上,显示“你找到”+用户搜索的名字+匹配该特定项目的任务。但是,我不知道该怎么做就是匹配使用该名称的每个列表项目。例如,我可以让一个名叫鲍勃的人做三个不同的任务。现在这个搜索将只匹配第一个,但我想匹配所有三个。有什么建议么?匹配每个字符串的使用
function search() {
var searchTerm = document.getElementById("search").value;
searchTerm = searchTerm.trim();
if(searchTerm == null || searchTerm == "") {
alert("Please enter a string to search for");
return;
}
else {
var todoObj = undefined;
results = undefined;
re = undefined;
for(var i = 0; i < todos.length; i++) {
todoObj = todos[i];
re = new RegExp(searchTerm, "ig");
resultsOne = todoObj.who.match(re);
if(resultsOne) {
var ul = document.getElementById("test");
var li = document.createElement(li);
li.className = "listItem";
li.innerHTML = "You found " + todoObj.who + " who needs to " + todoObj.task;
ul.appendChild(li);
}
}
}
}
在我看来喜欢它应该工作。每个匹配创建一个新的LI并将其附加到UL。你可以创建一个演示它的小提琴吗? – Barmar 2013-03-08 20:23:57
它看起来像是在'for'循环的每次迭代中执行搜索匹配,然后立即显示结果。我可能会建议你保留一个匹配的待办事项列表,然后最后输出结果。 – sweetamylase 2013-03-08 20:24:21