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

Javascript 如何在JQuery中单击按钮后返回函数值?,javascript,jquery,cordova,anonymous-function,inappbrowser,Javascript,Jquery,Cordova,Anonymous Function,Inappbrowser,我有一个函数,它在调用时将输出返回给promise函数 我有一个executeScript方法,它动态处理Javascript方法,并返回关于这些方法返回内容的承诺 基础骨架 Ref.executeScript({ code: "getData(); function getData(){ var res = 'Hello'; return res;}", function(results){ console.log(result

我有一个函数,它在调用时将输出返回给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;
}

更新了原始问题以提供更清晰的信息

您应该这样写:

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

我想你想要更新点击事件的值,你必须使用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)

当然,它仍然返回“Hello”,因为当您调用该函数时,它不会进入click函数。函数真正做的是为click事件设置一个操作,但不调用它。 你不能在点击事件函数中返回一个值,我无法想象你在哪里需要它。 您可以尝试这样的范围外变量,但我不建议这样做:

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

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

您的所有函数都使用jQuery(“#myButton”)。在(…)上,是在
#myButton
元素上建立一个单击事件侦听器。您应该让该侦听器执行所需的语句,因为它们只会在您单击元素时发生。您不太可能真正“需要”它。您应该解释将要发生什么以及何时发生,请记住,任何单击事件都将在
getData()
完成执行后很久触发。Chromium/Chrome扩展中是否使用了
.executeScript()
?@SouravDas似乎没有提到处理
详细信息的异步进程“如果注入的脚本类型为代码,则回调将使用单个参数执行,该参数是脚本的返回值,封装在数组中…”尽管这表明
.executeScript()
承诺,其中
。然后()
可以链接。@SouravDas没有在应用浏览器中尝试Cordova,未经测试
函数getData(){返回新承诺(函数(解析){jQuery(#myButton”)。在('click',函数(){resolve('Hello2')})}
单击id为='myButton'的按钮,res的值将为'Hello2'