1

我正在接受用户的输入,然后显示匹配的结果。因此,如果用户键入“a”,则会出现以下文本: Football Baseball Fast 如果用户在 a ('as') 后键入 s。显示以下文本 Football Baseball Fast Baseball Fast。但是当用户键入 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/>";
}
}
}
4

3 回答 3

2

作为第一行添加document.getElementById('placeholder').innerHTML="";到您的函数arraysearch(myRegex)

于 2012-09-26T11:25:13.993 回答
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;
于 2012-09-26T11:23:41.060 回答
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/>";
      }
   }
}​
于 2012-09-26T11:32:27.073 回答