在JQuery中单击按钮后如何返回函数的值?

时间:2019-02-06 05:45:04

标签: javascript jquery cordova anonymous-function inappbrowser

我有一个函数,该函数在调用时将输出返回给promise函数。

我有一个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 :(得分:0)

当然,它仍然会返回“ Hello”,因为调用该函数时不会在click函数上输入。函数的真正作用是为click事件设置一个动作,而不是调用它。 您实际上无法在click事件函数中返回值,而且我无法想象您将在哪里使用它。 您可以尝试使用超出范围的变量,例如,但我不建议这样做:

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

function buttonWasClicked() {
     var res = hasBeenClicked;
     hasBeenClicked = false;
     return res;
});

答案 1 :(得分:-1)

您应该这样写:

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";
    });
});

答案 2 :(得分:-1)

我认为您要为此点击事件更新值,因此必须使用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)