Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 19.04.2016, 23:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Alexander Belov,
забыть что есть getElementsByClassName и переписать код.
Ответить с цитированием
  #22 (permalink)  
Старый 20.04.2016, 00:08
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

рони,
А что тогда использовать в качестве селектора по классам, ведь насколько мне известно getElementsByClassName может отображать динамически состояние массива с заданным классом против querySelector, который отображает лишь статичный набор элементов массива.

element.classList.contains("smth") ?

Последний раз редактировалось Alexander Belov, 20.04.2016 в 00:10.
Ответить с цитированием
  #23 (permalink)  
Старый 20.04.2016, 01:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Alexander Belov,
если сложно с динамическим списком ... а так пишите как хотите ... плохая локализация проблемы ... сложно угадать, что вы не так творите.
Ответить с цитированием
  #24 (permalink)  
Старый 01.05.2016, 22:59
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

Чтобы не создавать новую тему, отпишу сюда. Табы на добавление-удаление работают как нужно. Единственное, если удалить последнюю табу, то консоль выдаёт ошибку:
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
Ответить с цитированием
  #25 (permalink)  
Старый 01.05.2016, 23:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Alexander Belov,
а что происходит в setTimeout, откуда и зачем это возникло, и что вы хотите найти * этим селектором?
Ответить с цитированием
  #26 (permalink)  
Старый 01.05.2016, 23:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от Alexander Belov
if (tabs.childNodes.length)
children
Ответить с цитированием
  #27 (permalink)  
Старый 02.05.2016, 01:49
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

Сообщение от рони Посмотреть сообщение
Alexander Belov,
а что происходит в setTimeout, откуда и зачем это возникло, и что вы хотите найти * этим селектором?
Честно говоря, не совсем сам понимаю, почему оно работает. setTimeout для того, чтобы функция сработала после прорисовки DOM.
А селектор по факту выбирает первый child у tabs, если таковой имеется. Но почему использован *, я не понимаю. По логике он ведь должен выбирать всех детей вообще. Это решение мне подсказали, но не объяснили.

С children всё отлично работает - благодарю!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery научите пользоваться. Станислав89 Общие вопросы Javascript 10 19.12.2013 23:01
querySelectorAll - Как научить ему ie 8- ??? viktorina Internet Explorer 6 06.01.2013 15:46
The only valid measurement of code quality: WTFs/m x-yuri Оффтопик 0 30.01.2011 13:26
Selector - чтобы выбрать следующий tag Beck jQuery 5 29.01.2010 16:29
XHTML 1.0 Valid Илья Кантор Сайт Javascript.ru 24 03.04.2008 19:49