我有一个函数,该函数在调用时将输出返回给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;
}
更新了原始问题以使内容更清晰
答案 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)