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



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

最新更新