Как вернуть значение функции после нажатия кнопки в JQuery? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть функция, которая при вызове возвращает вывод функции обещания.

У меня есть метод executeScript, который динамически обрабатывает методы Javascript и возвращает обещание того, что возвращают эти методы.

Базовый скелет

Ref.executeScript({
                code: "getData(); function getData(){ var res = 'Hello'; return res;}",
            function(results){
     console.log(results); ////THIS RETURNS "Hello"
   });

Когда код напрямую возвращает переменную, он работает.Например, следующий код возвращает Hello при выполнении.

getData();
 function getData(){
   var res = "Hello";
   return res;
  }

Но если я верну его в событии click, он возвращает предыдущее значение «Hello», а не «Hello2» при нажатии кнопки.Я хочу, чтобы "Hello2" был возвращен.

getData();
function getData(){
 var res = "Hello";
 jQuery("#myButton").on('click', function(){
   res = "Hello2";
   alert(res); //this gets called
  });
return res;
}

Обновлен исходный вопрос для большей ясности

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

Я думаю, что вы хотите обновить значение события клика, для этого вам нужно использовать прототип javascript, попробуйте это

function GetData(){
   this.res = "Hello";

} 
jQuery("#myButton").on('click', function(){

   GetData.prototype.res = "Hello2";
     alert(res); //this gets called
  });
  getData  = new GetData();
  console.log (getData.res)
0 голосов
/ 06 февраля 2019

Конечно, он по-прежнему возвращает «Hello», потому что когда вы вызываете эту функцию, он не входит в функцию щелчка.На самом деле ваша функция устанавливает действие для события click, но не вызывает его.Вы не можете действительно вернуть значение в функции события клика, и я не могу представить, где она вам понадобится.Вы можете попробовать использовать переменные вне области действия, как это, но я не рекомендую делать это:

var hasBeenClicked = false;
jQuery("myButton").on('click', function(){ 
     hasBeenClicked = true;
});

function buttonWasClicked() {
     var res = hasBeenClicked;
     hasBeenClicked = false;
     return res;
});
0 голосов
/ 06 февраля 2019

вы должны написать что-то вроде этого:

var res = '';
function getData(){
    res = "Hello";
    return res;
}

$(document).ready(function() {
    $("#myButton").click(function(e){
       e.preventDefault(); //if you have form to submit
       res = "Hello2";
    });
});
...