Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Передать значение переменной из одной функции в другую (https://javascript.ru/forum/events/60447-peredat-znachenie-peremennojj-iz-odnojj-funkcii-v-druguyu.html)

lenkanat 30.12.2015 16:28

Передать значение переменной из одной функции в другую
 
Привет, гуру JavaScript'a!
Помогите решить проблему
Как заставить следующий код работать?

<script src="js/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
var size;
function windowSize(){
if ($(window).width() <= '1360'){
size = 1;
} else {
size = 2;
}
}
$(window).on('load resize',windowSize);
function myfunc(){тут вывести size через alert}
</script>


P.S. Нужно очень срочно...

Lemme 30.12.2015 17:00

http://learn.javascript.ru/function-...начения

lenkanat 30.12.2015 17:32

Сделала по инструкции, но теперь работает только при загрузке и обновлении страницы, а при изменении размера окна ничего не происходит, если обновить то все окей.

вот код:

<script src="js/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
var size;
function windowSize(){
if ($(window).width() <= '1360'){
size = 1;
} else {
size = 2;
}
}
windowSize();
$(window).on('load resize',windowSize);
function myfunc(){alert(size);}
myfunc();
</script>


Что не так ?

callbackhell 30.12.2015 17:49

У Вас windowSize выполняется асинхронно, на момент вызова myfunc переменная size не установлена в нужное значение, отработал только первый(синхронный) вызов windowSize

lenkanat 30.12.2015 17:52

callbackhell,
покажите, пожалуйста на моем примере как правильно это реализовать.

callbackhell 30.12.2015 17:58

lenkanat,
проще всего просто засунуть 2-й вызов в коллбек
$(window).on('load resize', function(){windowSize(); myfunc()});

Dilettante_Pro 30.12.2015 18:04

Цитата:

Сообщение от lenkanat (Сообщение 401995)


<script src="js/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
var size;
function windowSize(){
if ($(window).width() <= 1360){
size = 1;
} else {
size = 2;
}
myfunc();
}

$(window).on('load resize',windowSize);
function myfunc(){alert(size);}

</script>

Ваша myfunc только и могла работать один раз - при загрузке. Больше ей не было причин работать

lenkanat 30.12.2015 18:19

callbackhell,
а есть ли еще какой нибудь вариант? просто myfunc большая :)
!function(myfunc){...}

callbackhell 30.12.2015 18:27

Цитата:

Сообщение от lenkanat
просто myfunc большая

Ну и что, что она большая?
Цитата:

Сообщение от lenkanat
а есть ли еще какой нибудь вариант?

там вариантов куча, но в вашем случае, все варианты равнозначны, суть в том, чтобы myfunc отработала после события, а не до него.

lenkanat 30.12.2015 20:23

callbackhell,
Спасибо, все получилось.


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