Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замыкание Js( Help ) (https://javascript.ru/forum/misc/78842-zamykanie-js-help.html)

Фаниль 12.11.2019 15:27

Замыкание Js( Help )
 
Проблема такая я обьявил переменную глобально
let have = false;
далее идет функция наведения мыши
где я ее переопределяю
$(".hover_2").mouseover(function () {
have = true;
setTimeout(function () {
$(".sheme-in").css({ "display": "none" });
$(".sheme-in2").css({ "display": "block" });

}, 100);
})
после проверка
if (have == true ) {
console.log('trueee')
}
else {
setInterval(randFunc, 6500);
}
но при наведении мыши если я в консоле вывожу console.log(have) он выдает false то есть она глобально не поменялось на true
как мне внутри функции ее изменить на true чтобы она изменилась глобально

Malleys 12.11.2019 15:39

Цитата:

Сообщение от Фаниль
после проверка

Если эта проверка идёт сразу в коде, то она будет показывать false, поскольку ещё мышка не наводилась!

Если у вас реально есть элемент .hover_2, то после наведения переменная поменяется на true, можете проверить

Фаниль 12.11.2019 15:51

Может что то я путаю, но при наведении на .hover_2 have должен меняется на true; и должно срабатывать console.log('trueee'); в этой проверке (if (have == true ) {
console.log('trueee')
}
else {
setInterval(randFunc, 6500);
})
но срабатывает ветка else

Фаниль 12.11.2019 16:14

Задача у меня такая.Есть схема где проходят определенные анимации при наведении на какую нибудь часть схемы эта часть закрашивается реализовал таким кодом
const nine = function () {
$(".layer10").css({ "display": "none" });
$(".layer11").css({ "display": "none" });
$(".sheme-in").css({ "display": "none" });
$(".sheme-in2").css({ "display": "block" });
$(".layer10-hover").css({ "display": "block" });
$(".layer11-hover").css({ "display": "block" });
};
$(".hover_8").mouseover(function () {
have8 = true;
setTimeout(nine, 100);
}); теперь же нужно когда мышка не наведена на эту схему рандомная область закрашивалась
const arrFunc = [one, two, three, four, five, six, seven, eight, nine];
randFunc = () => {
arrFunc[Math.floor(Math.random() * arrFunc.length)]();
}
if (have1 == true || have2 == true || have3 == true || have4 == true || have5 == true || have6 == true || have7 == true || have8 == true || have9 == true) {
console.log('true')
}
else {
setInterval(randFunc, 6500);

В итоге рандомное закрашивание срабатывает, мне нужно чтобы когда наводилась мышка на область схемы не работала рандомное закрашивание я подумал сделать через условие если хотя бы один have true то ничего не произойдет если же все false то сработает функция закрашивания setInterval(randFunc, 6500); В итогу у меня при наведении have всегда false

рони 12.11.2019 17:17

Фаниль,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.


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