2016-12-01 3 views
3
<body> 

<p class="initial">Number One!</p> 
<p class="initial">Number Two!</p> 
<p class="initial">Number Three!</p> 

<script> 
var x = document.getElementsByClassName("initial"); 
x[0].innerHTML = "<span class=\"fix\">super duper</span>"; 
</script> 

</body> 

x[0].innerHTML указывает на первый элемент. Однако что, если я хотел бы изменить innerHTML нескольких элементов в массиве? Например, первый и третий. x[0, 2].innerHTML не работает. Я искал синтаксис онлайн, и я ничего не могу найти.Каков правильный синтаксис для указания нескольких элементов в массиве JavaScript?

+0

Вы не можете сделать это таким образом. Вам нужно заявление для каждого отдельно. – putvande

+0

Не забудьте прочитать [* Что делать, если кто-то отвечает на мой вопрос? *] (Http://stackoverflow.com/help/someone-answers), когда вы довольны ответом. Вы можете принять только один, но вы можете поддержать любой ответ, который, по вашему мнению, полезен, чтобы сказать «спасибо». – Aurora0001

ответ

3

Рассмотрим for loop для запуска кода несколько раз:

for (var i = 0; i < 3; i++) { 
    x[i].innerHTML = "<span class=\"fix\">super duper</span>"; 
} 

Если есть определенные элементы, которые вы хотите, создать массив и перебирать с forEach loop:

var desiredElems = [1, 3, 7, 9]; 
desiredElems.forEach(function(element) { 
    x[element].innerHTML = "<span class=\"fix\">super duper</span>"; 
}); 
+0

Спасибо Aurora! Это хороший способ решить эту проблему. Но что, если я не хочу исправлять каждый экземпляр? Например, если было 99, и я хотел исправить 5 случайных разбросанных по всей странице. Для этого нет сокращений? – DR01D

+0

@ DR01D просто добавил это для вас. – Aurora0001

3

Задание выражение которые возвращают присвоенное значение, поэтому вы можете сделать следующее:

var x = document.getElementsByClassName("initial"); 
 
x[0].innerHTML = x[2].innerHTML = "<span class=\"fix\">super duper</span>";
<p class="initial">Number One!</p> 
 
<p class="initial">Number Two!</p> 
 
<p class="initial">Number Three!</p>


Если вы хотите изменить более чем несколько индексов, можно определить показатели, как массив и использовать цикл:

var indices = [0, 2]; 
 

 
var x = document.getElementsByClassName("initial"); 
 
indices.forEach(function(i) { 
 
    x[i].innerHTML = "<span class=\"fix\">super duper</span>"; 
 
})
<p class="initial">Number One!</p> 
 
<p class="initial">Number Two!</p> 
 
<p class="initial">Number Three!</p>

+1

Хорошо, что работает! Но что, если было 99 экземпляров «начального», и я хотел работать на # 3, 17, 35, 36, 89, 91. Я бы перечислил восток один в отдельности? Нет стенографии? Спасибо Тимо! – DR01D

+1

Посмотрите мое редактирование. Время, чтобы стать творческим! – Timo

+0

Золото !!! Спасибо Timo – DR01D

2

Вы можете перебрать массив с for...of:

var x = document.getElementsByClassName("initial"); 
 
for (var i of [0,2]) 
 
    x[i].innerHTML = "<span class=\"fix\">super duper</span>";
<p class="initial">Number One!</p> 
 
<p class="initial">Number Two!</p> 
 
<p class="initial">Number Three!</p>

+0

Спасибо Ориол, я думаю, что это так! Это золото! – DR01D

+0

Обратите внимание, что 'for ... of' является функцией ES6 и, возможно, [не поддерживается всеми целевыми браузерами] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for ... из # Browser_compatibility), например любая версия Internet Explorer до IE12 (Edge). – Timo

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