@z_u_q

Как вывести переменную за пределы функции?

При ресайзе пересчитывается ширина body. Как вытащить переменную, в которую записана ширина, за пределы функции в данном случае? Сейчас в console.log выводится 0.
$(function(){
	heightOfSubMnu = 0;

    function onResize() {
        heightOfSubMnu = $('body').width();
    }

    function consleLog() {
    	console.log(heightOfSubMnu);
    }

    consleLog();
    $(window).resize(onResize);
    consleLog();

})
  • Вопрос задан
  • 1186 просмотров
Решения вопроса 3
Stalker_RED
@Stalker_RED
eqESPM.png

consleLog() сработает дважды при старте

onResize() сработает при каждом изменении размера окна

но consleLog() при этом не запустится повторно.

Можно переделать onResize так:
function onResize() {
    heightOfSubMnu = $('body').width();
    consleLog();
}
Ответ написан
netrox
@netrox
$(function(){
  var heightOfSubMnu = 0;

    function onResize() {
        heightOfSubMnu = $('body').width();
    }

    function consleLog() {
    	console.log(heightOfSubMnu);
    }

    consleLog();
    $(window).resize(function()
    {
    	onResize();
      consleLog();
    });
    
})
Ответ написан
Комментировать
@lemix85
У вас ведь функция onResize назначена обработчиком события, вот внутри этой функции и выводите обновлённое значение переменной.
function onResize() {
        heightOfSubMnu = $('body').width();
        consleLog();
}


а не после того как вы выполнили подписку на событие:

$(window).resize(onResize);

Событие изменения размера окна придёт позже, чем произойдёт вызов consleLog(); в конце кода.
Читайте про асинхронное программирование, мне кажется вас именно это сбило с толку.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект