Возврат значения функции jQuery / JS

0

Это может быть из-за бессонницы, но у меня возникли проблемы с получением следующей, простой функции JS для работы.

function numFunction() {
    var retNum = null;
    $('.draggable').draggable($state).on("drag", function (event, ui) {
        retNum = 31;
    });
    return retNum;
}

var finNum = numFunction();

Это так просто:

  • Начнем с создания функции с именем numFunction.
  • Определяется переменная retNum. Переменная изменяет свое значение из-за события, вызванного jQuery UI draggable (который отлично работает).
  • Возврат retNum
  • И последнее, но не менее важное: определить новую переменную finNum с функцией (предположительно) новым значением 31.
  • Конец истории.

К сожалению, это не сработает. console.log(finNum) возвращает только null. Я собираюсь склонить голову к стене: я не знаю, чего мне не хватает.

  • 1
    Это не имеет большого смысла. Запуск функции и возвращение значения - это время. И это происходит немедленно, и в этот момент обработчик событий еще не может быть запущен. И последующие фальсификаторы обработчика событий не будут волшебным образом запускать функцию снова. Логика ошибочна. Вместо этого вам следует запустить код, которому необходим доступ к переменной, изнутри обработчика событий. Взгляните на stackoverflow.com/questions/14220321/… , который в основном та же самая ситуация.
  • 0
    Это имеет смысл. Будет ли дополнительное чтение. Все мое мышление сейчас наизнанку.
Теги:
function
jquery-ui-draggable

1 ответ

1
Лучший ответ

Вы изменяете значение retNum только на draggable обработчике событий, которое выполняется только после запуска события.

Но это не произойдет, если это событие не вызвало.

Когда вы вызываете функцию, обработчик может еще не запускаться, поэтому retNum остается null

Так сделайте так:

function numFunction() {
    var retNum = null;
    $('.draggable').draggable($state).on("drag", function (event, ui) {
        retNum = 31;
    }).trigger('drag');<- trigger it immediately to set the value of retNum to 13
    return retNum;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню