私はphpファイルで関数を使用して、次のような「li」要素と「span」要素をいくつか作成しています。
while($row_quotes=mysql_fetch_array($result_quotes) and $x<10){
$x++;
echo "<li class='citazione'>".$row_quotes['citazione']."</li><span class='citazione_info'>".$row_quotes['personaggio']." - ".$row_quotes['libro']."</span>";
}
これらは「ul id='quotes_holder'」内に含まれています。次に、特定の呼び出しで作成されたすべての「li」要素と「span」要素を削除する必要があるJavaScript関数があるため、「ul」を含むremoveChild()メソッドを使用してそれらを削除するとうまくいくと思いました。
JavaScript関数は次のとおりです。
function ritorna_filtri(obj, autore){
var index=obj.selectedIndex;
var selected=obj.childNodes[index];
var value= selected.value;
var div=document.getElementById('quotes_holder');
for(l=0;l<div.childNodes.length;l++){
div.removeChild(div.childNodes[l]);
}
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
response=xmlhttp.responseText;
jsonObj=eval("("+response+")");
for(i=0;i<jsonObj.libri.length;i++){
var li=document.createElement('li');
var text=document.createTextNode(jsonObj.libri[i].titolo);
li.appendChild(text);
li.setAttribute('class', 'filtro');
div.appendChild(li);
}
}
}
xmlhttp.open("GET","ritorna_filtri.php?filtro="+value+"&autore="+autore,true);
xmlhttp.send();
}
問題は、関数が実行されたときに「li」要素のみが削除され、「span」がまだ残っていることです。