Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   this в функциях (https://javascript.ru/forum/misc/76199-v-funkciyakh.html)

tavla 12.12.2018 22:52

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 в первом варианте)

SuperZen 12.12.2018 22:55

во втором куске кода в 4-й строке надо убрать (), чтобы было onClickSimple

tavla 13.12.2018 12:34

спасибо, помогло.


Часовой пояс GMT +3, время: 18:49.