хочу передать переменную window.globalVar из функции(функция меняет значение переменной при наведении на элемент), но не получается не могу понять в чем причина, заранее благодарен
window.globalVar = null;
$.miniMenu = null;
$(document).ready(function(){
var project_li = $(".project-li"),
Project_BG = $("#Project-Desc-BG"),
project_body = $(".project-desc-body");
project_li.on("mouseover", function taca() {
project_li.removeClass('active');
$(this).addClass('active');
project_body.removeClass('active');
$($(this).attr("data-target-project")).addClass('active');
Project_BG.css({'background-image' : $(this).attr("data-target-bg")});
window.globalVar= $(this).attr("data-target-bg");
//console.log(window.globalVar); //тут работает
Project_BG.css({'background-size' : $(this).attr("cover")});
Project_BG.css({'z-index' : $(this).attr("z")});
});
});
console.log(window.globalVar); // тут не работает
$(document).ready
- асинхронный кусок кода, он запускается и код вне блока идет дальше, поэтому console.log(window.globalVar)
срабатывает до изменения window.globalVar
Как ответил Shiki, функция ready срабатывает гораздо позже, чем срабатывает логирование в консоль. JS в данном случае не синхронный, то есть функция ready может сработать допустим через час или никогда. И её данные можно передать только в функцию, которая будет вызвана внутри ready. Тут как-бы рождается новый поток выполнения, а в старый вернуться уже нельзя. Самый простой ответ на ваш вопрос - поднять консоль-лог на пару строчек выше внутрь ready.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В id="convert-json-to-html-tree-sets" подгружаю форму с инпутами и кнопками к каждому инпуту
Как написать эту jquery строку на чистом javascript? Строку я обозначил комментарием