function addClass(obj, cls) {
var classes = obj.className ? obj.className.split(' ') : [];
for (var i = 0; i < classes.length; i++) {
if (classes[i] == cls) return; // класс уже есть
}
classes.push(cls); // добавить
obj.className = classes.join(' '); // и обновить свойство
}
var obj = {
className: 'open menu'
};
addClass(obj, 'new');
addClass(obj, 'open');
addClass(obj, 'me');
alert(obj.className) // open menu new me
По условию нужно создать функцию addClass(obj, cls), которая добавляет в список класс cls, но только если его там еще нет и она не должна добавлять лишних пробелов.
Смысл условия - предотвратить ошибку, если className
отсутствует.
var obj = {}; // no className
var classes = obj.className ? obj.className.split(' ') : [];
console.log(classes); // пустой массив (классов нет)
classes = obj.className.split(' '); // Ошибка
PS: Рекомендую воспользоваться classList
var classes = obj.className ? obj.className.split(' ') : [];
В classes
нужно положить массив всех классов элемента.
Читаем как работает тернарный оператор ?:
- ссылка.
Если obj.className
пуст, то возвращаем пустой массив []
;
Если там есть содержание то возвращаем результат действия split.
Функция split дробит строку на части превращая в массив, используя для разделения разделитель из аргумента.
Всю эту функцию можно переписать более коротко
obj.classList.add(cls);
Используя современный синтаксис языка и переменную classList
у тега.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый деньЯ только разбираюсь с JavaScript, пробую написать простой скрип с условиями
Есть код который удаляет определённые символы (в частности "руб") в одинаковых классах