我从用户那里获取输入,然后显示匹配的结果。因此,如果用户键入“a”,则会显示以下文本: 足球 棒球 快速 如果用户在a('as')之后键入s。以下文字显示为足球 棒球 快速 棒球 快速。 但是当用户输入为。
时,我想删除前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/>";
}
}
}
答案 0 :(得分:2)
将document.getElementById('placeholder').innerHTML="";
作为第一行添加到您的函数arraysearch(myRegex)
答案 1 :(得分:1)
您正在做的只是将新列表添加到旧列表中,而不是替换它。 尝试用以下方法替换最后一个for循环:
var newHtml;
for(i=0; i<myArray.length; i++)
{
if (myArray[i].match(myRegex))
{
newHtml += myArray[i] + "<br/>";
}
}
document.getElementById('placeholder').innerHTML = newHtml;
答案 2 :(得分:1)
您需要先重置占位符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/>";
}
}
}