@Keterone

Функция срабатывает сама по себе?

Проблема такова:
я сделал функцию
const getS = selector => document.querySelector(selector)
const resPan = getS('.result_panel')

function btn_color(boolean){
    if(boolean == false){
    for(i=0; i < getS('.color_selector').children.length; i++){
        getS('.color_selector').children[i].style.background = colors[i]
        getS('.color_selector').children[i].classList.toggle('unaviable')
        getS('.color_selector').children[i].addEventListener('click', function(){
            resPan.style.color = this.style.background
            })
        }
    }

}

и к ней
getS('#txt_color').addEventListener('click', btn_color(false))

но функция срабатывает сама по себе. Какая может быть причина?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 2
@abberati
frontend-разработчик
btn_color(false) // <-- это вызов функции, ты сам её вызываешь, а в качетсве eventListener устанавливаешь undefined, который возвращает эта функция


getS('#txt_color').addEventListener('click', () => btn_color(false)) // <-- это объявление функции, которая при вызове вызовет твою функцию
Ответ написан
Комментировать
lazalu68
@lazalu68
Salmon
Функция срабатывает потому что вы её вызываете:

getS('#txt_color').addEventListener('click', btn_color(false))


btn_color(false) это вызов функции. Если вы хотели передать обработчик который будет выполнять btn_color с аргументом false, то это как-то так:

getS('#txt_color').addEventListener('click', () => {
    btn_color(false)
})
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
StupidQuestion
@StupidQuestion
Задаю глупые вопросы...
boolean - зарезервированное слово. Может в нем проблема?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы