Проблема с innerHTML в JS:(

141
04 октября 2018, 14:30

Мне нужно изменить обе строки в html, но с помощью innerHTML получается изменить лишь одну строку (ту, где единица написана).

Как можно решить эту проблему? html:

<h2 id='exp'>1</h2><br/>
<h2 id='exp'>2</h2><br/>

js:

var exp = document.getElementById('exp');<br/>
exp.innerHTML = "Привет!";
Answer 1

Вам нужно либо изменить id у второй строки и использовать ещё один вызов getElementById, либо использовать getElementsByTagName:

var elements = document.getElementsByTagName('h2'); 
 
for(var i = 0; i < elements.length; i++) { 
  elements[i].innerHTML = 'Hello'; 
}
<h2>1</h2> 
<h2>2</h2>

Но, конечно, лучше не использовать одинаковый id у элементов, т. к. это не совсем корректно. Использование getElementsByTagName также таит в себе подводные камни (вдруг на странице будут ещё h2).

Вероятно, самым правильным способом будет использование getElementsByClassName:

var elements = document.getElementsByClassName('exp'); 
 
for(var i = 0; i < elements.length; i++) { 
  elements[i].innerHTML = 'Hello'; 
}
<h2 class='exp'>1</h2> 
<h2 class='exp'>2</h2>

READ ALSO
Вывод информации из таблицы mysql

Вывод информации из таблицы mysql

Использую библиотеку mysqldb

183
MySQL выборка из БД

MySQL выборка из БД

Таблица books (id, name)

170
Как поменять пароль у root&#39;a в mysql?

Как поменять пароль у root'a в mysql?

Всем привет При установка mysql

183
Не найден драйвер doctrine, как исправить?

Не найден драйвер doctrine, как исправить?

Убил весь день, перерыл пол гугла

156