Javascript 如何在JQuery中单击按钮后返回函数值?
我有一个函数,它在调用时将输出返回给promise函数 我有一个executeScript方法,它动态处理Javascript方法,并返回关于这些方法返回内容的承诺 基础骨架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
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'