2010-09-25 4 views
1

У меня есть несколько экземпляров div с идентификатором «myDiv» на странице. Я хочу заменить содержимое этих div. Когда я использую этот JavaScript:Почему этот небольшой javascript не работает?

function replaceContent(id, content) { 
    var container = document.getElementById(id); 
    container.innerHTML = content; 
} 

replaceContent('myDiv', 'hello there'); 


<div id="myDiv"></div> 
<div id="myDiv"></div> 
<div id="myDiv"></div> 

Он заменяет только содержимое внутри одного из этих див и не все из них. Если вместо этого я использую функцию .html() jquery, она заменяет содержимое всех div. Есть ли способ, которым я могу заставить вышеупомянутые js работать одинаково?

+2

«несколько экземпляров div с идентификатором« myDiv ». Ну, это ваша проблема прямо сейчас! 'id' должен быть уникальным. Используйте 'class', если вы хотите что-то не уникальное. –

ответ

7

Значения id должны быть уникальными - вы не можете иметь более одного идентификатора с тем же именем и обновлять все из них.

1

У меня есть несколько экземпляров div с идентификатором «myDiv» на странице.

Это то место, где вы делаете это неправильно. Вы не можете присвоить идентификатор нескольким элементам на странице - он должен быть уникальным.

Это только заменяет содержимое внутри одного из этих div и не всех из них.

Это происходит из-за того, что getElementById() возвращает только элемент с первым совпадением в случае соответствия нескольких таких элементов.


Чтобы решить эту проблему, назначить класс вместо ID к дивы вы хотите цели, и если вы можете использовать JQuery, используйте это вместо того, чтобы (при условии, class="myDiv"):

function replaceContent(className, content) { 
    $('div.' + className).html(content); 
} 

// This appends className so the selector becomes $('div.myDiv') 
replaceContent('myDiv', 'hello there'); 
0

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

<div id="div1" class="mydivs">blah</div> 
<div id="div2" class="mydivs">blah123</div> 

Для примера. В JQuery вы можете:

$('.mydivs').html("whatever"); 
+1

На мой взгляд, JQuery слишком хорош. Это отвлекает программирование. – 2010-09-25 13:35:07

Смежные вопросы