Как добавить список классов и показать только последний в JavaScript?

У меня есть функция, которая вызывает случайное количество классов, добавленных в мои div:

htmlFields[i].classList.add(numbers[i]);

numbers[i] Можно добавить случайные классы: 'one','two','three','four','five'

И мои дивы, которые уже есть 'static','static2' классы добавляются случайные классы, как это:

<div class="static static2 five one">
<div class="static static2 two four one">
<div class="static static2 one three four">
<div class="static static2 five one">
<div class="static static2 one five four">

Я хочу сохранить статические классы и добавить только последний класс из случайных классов. Я пытался использовать setAttribute() метод, но он удалил статические классы.

Так как же я могу добавить только последний из "случайных классов" и сохранить статические классы одновременно?

4 ответа

В вашей функции перед вызовом setAttribute вам нужно сохранить текущий класс в переменной и добавить свой класс случайных чисел, как показано ниже:

var currentClass = htmlFields[i].getAttribute('class');
currentClass += " " + numbers[i];
htmlFields[i].setAttribute('class', currentClass);

Удалить все "случайные" классы:

for ( var j = 0; j < numbers.length; ++j )
  // it's safe to "remove" a class that isn't actually set,
  // so we don't need to check
  htmlFields[i].classList.remove( numbers[j] );

Затем добавьте тот, который вы хотите.

htmlFields[i].classList.add(numbers[i]);

Либо явно удалите все остальные случайные классы, либо используйте setAttribute и повторно добавить статические классы.

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

var elems = Array.prototype.slice.call(document.querySelectorAll('.static')),
    numbers = ['one','two','three','four','five'];

elems.forEach(function(elem, i) {
    elem.className = elem.className + " " + numbers[i];
});
<div class="static static2"></div>
<div class="static static2"></div>
<div class="static static2"></div>
<div class="static static2"></div>
<div class="static static2"></div>

Другие вопросы по тегам