Использование getElementById для заполнения элемента на странице - PullRequest
0 голосов
/ 25 июня 2011

Я новичок в Ajax, но я знаю, что вы можете использовать getelementbyid для обновления любого элемента на странице с этим идентификатором.Я хочу знать, как вы нацеливаете определенный элемент на странице, если все они имеют одинаковый идентификатор?

<li class="a">something</li><li class="a">something b</li>

Как мне выбрать второй ли?так как они оба используют один и тот же идентификатор, я не могу использовать getelementbyid ('a'), так как это обновит только первый элемент с этим идентификатором.

Это мой сценарий ajax

function loadurl(dest) {
var XMLHttpRequestObject = false; 
if (window.XMLHttpRequest) { 
        XMLHttpRequestObject = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
        XMLHttpRequestObject = new 
        ActiveXObject("Microsoft.XMLHttp"); 
} if(XMLHttpRequestObject) { 
        XMLHttpRequestObject.open("GET", dest); 
        XMLHttpRequestObject.onreadystatechange = function() { 

    if (XMLHttpRequestObject.readyState == 4 && 
        XMLHttpRequestObject.status == 200) { 
        document.getElementById("a").innerHTML = 
        XMLHttpRequestObject.responseText; 
        delete XMLHttpRequestObject; 
        XMLHttpRequestObject = null; 
        } 
    } 
    XMLHttpRequestObject.send(null); 
} 

}

и это ссылка

<a onclick="loadurl('page.php?p=1&id=2')">

Ответы [ 2 ]

2 голосов
/ 25 июня 2011

Не повторяйте идентификаторы, используйте вместо них имена классов.Идентификаторы должны быть уникальными.

<li class="a">something</li><li class="a">something b</li>

Затем вы можете использовать что-то вроде jQuery , чтобы выбрать их.

$(".a")
0 голосов
/ 25 июня 2011

Использование одного и того же идентификатора на странице HTML более одного раза является недействительным HTML. Если вы использовали имена классов вместо:

<li class="a">something</li><li class="a">something b</li>

тогда вы могли бы использовать document.getElementsByClassName (), чтобы получить массив, содержащий все элементы этого класса.

Чтобы поместить свой ответ во второй элемент, используйте что-то вроде этого:

document.getElementsByClassName("a")[1].innerHTML = XMLHttpRequestObject.responseText;

или, чтобы поместить ваш ответ во все элементы с этим именем класса, используйте что-то вроде этого:

var els = document.getElementsByClassName("a");
for (var i = 0; i < els.length; ++i)
    els[i].innerHTML = XMLHttpRequestObject.responseText;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...