document.getElementById (somevar) не работает - PullRequest
1 голос
/ 09 февраля 2010

у меня есть код ниже, но getElementById (setID) не работает для меня, я знаю, что это ловит идентификатор, потому что оповещение (setID) работает.

есть идеи?

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>

Ответы [ 3 ]

4 голосов
/ 09 февраля 2010

Либо используйте 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) 
1 голос
/ 09 февраля 2010

Вы делаете глобальную переменную 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";
}
1 голос
/ 09 февраля 2010

Если

document.getElementById("data")

не работает, это имеет одну из следующих причин в 99% всех случаев:

  • Элемент не существует или больше не существует

  • Существует несколько элементов с идентификатором data

Это часто происходит, когда вызов AJAX вводит HTML-код, который также содержит элемент с таким же идентификатором.

...