1

以下のコードがありますが、getElementById(setID)が機能していません。alert(setID)が機能しているため、IDをキャッチします。

何か案が?

function getdata(file, aID){
req = xmlHttpRequestHandler.createXmlHttpRequest();
req.onreadystatechange = Response;
req.open("GET", file, true);
req.send(null);
setID = aID;
}

function Response() { 
    var ready, status;
    try {
        ready = req.readyState;
        status = req.status;
    }
    catch(e) {}
    if (ready == 4 && status == 200) {
          document.getElementById("data").innerHTML = req.responseText;
    }

   document.getElementById(setID).className = "someclass";
}


<div class="msg" id="someid">
<a href="javascript:getdata('data.php', 'someid')">somelink</a>
</div>
4

3 に答える 3

4

setIDをグローバル変数として使用するか、コールバック関数に渡します。

function getdata(file, aID)
{
    req = xmlHttpRequestHandler.createXmlHttpRequest();
    setID = aID;
    req.onreadystatechange = function() {Response(setID);};
    req.open("GET", file, true);
    req.send(null);
}

function Response(setID) 
于 2010-02-09T13:24:07.637 に答える
1

もしも

document.getElementById("data")

動作しません。これには、すべてのケースの99%で次のいずれかの理由があります。

  • 要素が存在しないか、もう存在しません

  • IDを持つ要素が複数ありますdata

これは、AJAX呼び出しで同じIDの要素も含むHTMLコードが導入された場合によく発生します。

于 2010-02-09T13:22:51.563 に答える
1

setID変数をグローバルにしていますか?そうでない場合は、これを試してください:

var setID = null; // we set this here because it is referenced in functions

function getdata(file, aID){
req = xmlHttpRequestHandler.createXmlHttpRequest();
req.onreadystatechange = Response;
req.open("GET", file, true);
req.send(null);
setID = aID;
}

function Response() { 
    var ready, status;
    try {
        ready = req.readyState;
        status = req.status;
    }
    catch(e) {}
    if (ready == 4 && status == 200) {
          document.getElementById("data").innerHTML = req.responseText;
    }

   document.getElementById(setID).className = "someclass";
}
于 2010-02-09T13:25:18.323 に答える