Изменить атрибут элемента при обращении к нему
Приветствую всех
Снова вопрос Есть список ul, внутри него li-шки Нужно сделать так, чтобы по клику по элементу списка менялся его класс. Не понимаю, как правильно обратиться.
function completeTodo() {
var opn = document.getElementsByTagName(li);
if (opn.className != 'completed') {
//liCompleted = true;
opn.setAttribute('class', 'completed');
} else {
opn.setAttribute('class', 'opened');
//liCompleted = false;
}
inputField.focus();
}
//Обработчик клика
opn.addEventListener('click', completeTodo, false);
}
|
Цитата:
|
Цитата:
Хотя вообще здесь бы мне подошёл простой пример с кликом по любому элементу со сменой его цвета, например) |
Zuko,
тут всё что вам нужно для создания кода https://learn.javascript.ru/event-delegation и главное понять что у NodeList opn нет свойств элемента |
Цитата:
Цитата:
|
Цитата:
Запустить цикл внутри массива? |
Пробую вот так - всё равно не получается(
document.getElementById('todo-list').addEventListener("click", displayDate);
function displayDate() {
var target = event.target; // где был клик?
if (target.tagName != 'li') return;
alert('daw');
li.setAttribute('class', 'karamba');
}
|
Zuko,
html минимальный кнопочку run -- сделайте макет нормальный -- и event добавьте в функцию раз с ним работаите |
Разобрался
document.getElementById('todo-list').addEventListener("click", todoDone);
function todoDone() {
var target = event.target; // где был клик?
if (target.className == 'opened' && target.tagName == 'LI') {
target.className = 'completed';
} else {
target.className = 'opened';
}
|
Цитата:
|
| Часовой пояс GMT +3, время: 12:57. |