문제

아래에 코드가 있지만 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>
도움이 되었습니까?

해결책

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) 

다른 팁

만약에

document.getElementById("data")

작동하지 않습니다. 이것은 모든 경우의 99%에 다음과 같은 이유 중 하나입니다.

  • 요소는 더 이상 존재하지 않거나 존재하지 않습니다

  • ID에는 둘 이상의 요소가 있습니다 data

AJAX 호출이 동일한 ID가있는 요소가 포함 된 HTML 코드를 소개 할 때 종종 발생합니다.

당신은 당신을 만들고 있습니까? 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";
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top