私はAJAXとJavascriptを初めて使用し、AJAXXMLHttpRequestによって返される要素に到達しようとすると問題が発生します。
シナリオは次のとおりです。
別のWebサイトからテーブルをフェッチし、send()メソッドを使用してページに出力した後、その要素にアクセスしたいと思います。dystroyの投稿のおかげでなぜそれができないのか理解しました。stackoverflowとgoogleを検索しましたが、役立つものは見つかりませんでした。探している答えを逃した場合は、投稿が重複していることをお詫びします。
だから私の質問は:リクエストの非同期性のためにフェッチコードの直後の結果を使用できないので、リクエストの直後にフェッチされた要素にアクセスする方法は何ですか?
ご清聴ありがとうございました:)
編集:コンテキスト
基本的に、テーブルをフェッチし、指定された<div>
要素(#table)に書き込んでからその内容をフィルタリングします。ここでの目的は、テーブルを他の指定された<div>
要素(#dersler)に書き込んでから、2番目の列以外の列のみを非表示にすることです。私が直面している問題は、前述のように、フェッチされたばかりのテーブル要素に到達できないことです。
コードは次のとおりです。
function fetchPage(str)
{
if(str=="")
{
document.getElementById("table").innerHTML="";
$('#saatler').val(1); //some filtering configuration
$('#gunler').val(1); //resetting filters in other words
$('#bolumler').val(1);
return;
}
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){
document.getElementById("table").innerHTML=xmlhttp.responseText;
document.getElementById("dersler").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET", "fetch.php?url=http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php?fb="+str, true);
xmlhttp.send();
$('#saatler').val(1); //some filtering configuration
$('#gunler').val(1); //resetting filters in other words
$('#bolumler').val(1);
//after fetch, new filter
$("#dersler").find('table').css("background-color", "blue");
}
今、私はその背景を青に着色しようとしています。問題は、ページをフェッチすると、テスト用に作成された既存のテーブルが青で塗りつぶされますが、500ミリ秒ほど後に、新しいテーブルが既存のサンプルテーブルに上書きされ、新しいテーブルの背景が青で塗りつぶされないことです。 。