删除以前的文本并使用javascript innerHTML显示新内容

时间:2012-09-26 11:19:57

标签: javascript innerhtml

我从用户那里获取输入,然后显示匹配的结果。因此,如果用户键入“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/>";
}
}
}

3 个答案:

答案 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/>";
      }
   }
}​