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

最初にプレースホルダー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 に答える
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 に答える