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

Удалить динамически добавленный класс, если он существует
Привет!

Прошу помочь разобраться с ситуацией:
у меня есть ul, в который динамически добавляю li, присваивая сразу класс tab и active.
При добавлении нового li мне нужно проверить, существует ли уже li с классом active, и если да, то удалить класс active у "старого" li. Чтобы среди li был всегда только один элемент с классом active.

Вроде бы, всё просто, но не получается сделать такую проверку.
//Create a new Tab
	var tabs = document.querySelector("#tabs"),
		newContent = document.createElement("div"),
		defaultDiv = document.querySelector("#defaultDiv"),
		ok = document.querySelector("#ok"),
		cancel = document.querySelector("#cancel"),
		name = document.querySelector("#name"),
		note = document.querySelector("#note"),
		activeTab = document.getElementsByClassName("tab active");//Наш li с классами tab и active

	//OK button onclick
	ok.onclick = function createTab(){

		var newTab = document.createElement("li");

                  console.log(activeTab);

		  if(activeTab !== null) {
			activeTab.classList.remove("active")
		   }

		newTab.innerHTML = name.value;

		if (newTab.innerHTML == "") {
			alert ("Gimme a name!");

			showBgr();
		}
	
		else {

			tabs.appendChild(newTab);
			newTab.setAttribute("data-attr", name.value);
			newTab.classList.add("tab", "active");
			tabs.insertBefore(newTab, defaultTab);

			defaultDiv.appendChild(newContent);
			newContent.innerHTML = note.value;
			newContent.setAttribute("data-attr", name.value);
			newContent.classList.add("content", "active");
		}

		foldPopup();
	};


JS Bin

Консоль выводит li с классом tab active, а когда функция срабатывает, то уже выдаётся ошибка Cannot read property "remove" of undefined (Строчки 16-20 кода выше)

Прошу подсказать, почему не работает функция и как это исправить.

Последний раз редактировалось Alexander Belov, 10.04.2016 в 10:30.
Ответить с цитированием