我正在从用户那里获取输入,然后显示匹配的结果。因此,如果用户键入"a",则会显示以下文本:足球棒球快如果用户在 ('as') 后键入 s。显示以下文本 足球棒球快棒球快。但是我想在用户键入 as 时删除前 3 个结果。
// JavaScript Document
s1= new String()
s2= new String()
var myArray = new Array();
myArray[0] = "Football";
myArray[1] = "Baseball";
myArray[2] = "Cricket";
myArray[3] = "Fast";
function test() // called on onkeyup()
{
s1 = document.getElementById('filter').value;
var myRegex = new RegExp((s1),"ig");
arraysearch(myRegex);
}
function arraysearch(myRegex)
{
for(i=0; i<myArray.length; i++)
{
if (myArray[i].match(myRegex))
{
document.getElementById('placeholder').innerHTML += myArray[i] + "<br/>";
}
}
}
将
document.getElementById('placeholder').innerHTML="";
作为第一行添加到函数arraysearch(myRegex)
您所做的只是将新列表添加到旧列表中,而不是替换它。尝试将最后一个 for 循环替换为以下内容:
var newHtml;
for(i=0; i<myArray.length; i++)
{
if (myArray[i].match(myRegex))
{
newHtml += myArray[i] + "<br/>";
}
}
document.getElementById('placeholder').innerHTML = newHtml;
您需要先重置占位符 innerHTML。下面是一个工作示例:http://jsfiddle.net/HW6fF/
thePlaceholder = document.getElementById('placeholder');
function arraysearch(myRegex) {
thePlaceholder.innerHTML = "";
for(i=0; i<myArray.length; i++) {
if (myArray[i].match(myRegex)) {
thePlaceholder.innerHTML += myArray[i] + "<br/>";
}
}
}