Показать сообщение отдельно
  #1 (permalink)  
Старый 12.12.2018, 22:52
Новичок на форуме
Отправить личное сообщение для tavla Посмотреть профиль Найти все сообщения от tavla
 
Регистрация: 12.12.2018
Сообщений: 2

this в функциях
всем привет.

только учу js, пишу простейший код, аналогичный radiobutton, т.е.
активным элементом становится тот, в который тыкнули мышкой,
а остальные становятся неактивными:
// рабочий код
var title = document.getElementsByClassName('accordion-title');
for (var i = 0; i < title.length; i++) {
    title[i].addEventListener('click', function () {
        if (!(this.classList.contains('active'))) {
            for (var i = 0; i < title.length; i++)
                title[i].classList.remove('active');
            this.classList.add('active');
        }
    })
}

дальше я хотел вынести функцию обработки в неанонимную функцию,
но возникла проблема с передачей в нее элемента, на котором кликнули мышкой:
// нерабочий код
var title = document.getElementsByClassName('accordion-title');
for (var i = 0; i < title.length; i++) {
    title[i].addEventListener('click', onClickSimple());
}
function onClickSimple() {
    if (!(this.classList.contains('active'))) {
        for (var i = 0; i < elements.length; i++)
            title[i].classList.remove('active');
        this.classList.add('active');
    }
}

подскажите, как для второго варианта в тело внешней функции передать активный
элемент (аналог this в первом варианте)
Ответить с цитированием