Мне нужно изменить обе строки в html, но с помощью innerHTML получается изменить лишь одну строку (ту, где единица написана).
Как можно решить эту проблему? html:
<h2 id='exp'>1</h2><br/>
<h2 id='exp'>2</h2><br/>
js:
var exp = document.getElementById('exp');<br/>
exp.innerHTML = "Привет!";
Вам нужно либо изменить 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>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты