Alexander Belov,
забыть что есть getElementsByClassName и переписать код. |
рони,
А что тогда использовать в качестве селектора по классам, ведь насколько мне известно getElementsByClassName может отображать динамически состояние массива с заданным классом против querySelector, который отображает лишь статичный набор элементов массива. element.classList.contains("smth") ? |
Alexander Belov,
если сложно с динамическим списком ... а так пишите как хотите ... плохая локализация проблемы ... сложно угадать, что вы не так творите. |
Чтобы не создавать новую тему, отпишу сюда. Табы на добавление-удаление работают как нужно. Единственное, если удалить последнюю табу, то консоль выдаёт ошибку:
Uncaught TypeError: Cannot read property 'classList' of null //Remove tab function removeTab(nodeArr) { return function(){ nodeArr.forEach(function(el) { el.parentNode && el.parentNode.removeChild(el); }); setTimeout( function() { tabs.querySelector("*").classList.add("active"); defaultDiv.querySelector("*").classList.add("active"); }, 0); }; } Это она ругается на строчки в функции setTimeout, когда последнюю табу удаляем, их же больше не остаётся. Логично было предположить, что создав условие типа if (tabs.childNodes.length) { tabs.querySelector("*").classList.add("active"); } можно было бы избежать ошибки, но консоль как игнорирует условие и однозначно выдаёт ошибку и с if, и без него. Что в данном случае сделано не правильно? Как избежать ошибки в консоли при удалении последней табы? Ссылка на JS Bin |
Alexander Belov,
а что происходит в setTimeout, откуда и зачем это возникло, и что вы хотите найти * этим селектором? |
Цитата:
|
Цитата:
А селектор по факту выбирает первый child у tabs, если таковой имеется. Но почему использован *, я не понимаю. По логике он ведь должен выбирать всех детей вообще. Это решение мне подсказали, но не объяснили. С children всё отлично работает - благодарю! |
Часовой пояс GMT +3, время: 22:51. |