Javascript 无法从提示中获取作为回调函数的变量

Javascript 无法从提示中获取作为回调函数的变量,javascript,jquery,prompt,Javascript,Jquery,Prompt,在按钮上右键单击我需要: -隐藏按钮 -然后显示提示 -写入提示值 -在控制台中获取值 函数a_ren(){ 变量a=‘lorem’; $('.cmenu').hide(函数(){var res=prompt('RENAME',a);}); 控制台日志(res); } $(文档).on('contextmenu','button',函数(e){ e、 预防默认值(); a_ren(); }); 单击未定义res的原因是传递给hide()的函数直到隐藏动画完成后才运行,但是console.lo

按钮上
右键单击我需要:
-隐藏按钮
-然后显示提示
-写入提示值
-在控制台中获取值

函数a_ren(){
变量a=‘lorem’;
$('.cmenu').hide(函数(){var res=prompt('RENAME',a);});
控制台日志(res);
}
$(文档).on('contextmenu','button',函数(e){
e、 预防默认值();
a_ren();
});


单击
未定义
res
的原因是传递给
hide()
的函数直到隐藏动画完成后才运行,但是
console.log(res)在不等待的情况下被调用。此外,正如Ram Segev指出的,
res
是在
hide
回调函数中定义的,因此这是其作用域中的唯一位置(可访问)

对于没有出现的提示,请尝试更改

$(document).on('contextmenu', 'button', function(e){


res
是未定义的,因为您在
hide
函数中声明它,并尝试在它之外打印它(不在范围内)。将控制台日志放在函数中,它应该会解决它

函数a_ren(){
变量a=‘lorem’;
$('.cmenu').hide(函数(){
var res=提示('RENAME',a);
控制台日志(res);
});
}
$(文档).on('contextmenu','button',函数(e){
e、 预防默认值();
a_ren();
});


单击
问题在于
var res
的作用域在隐藏完整回调中,而且即使在函数外部声明res,也不会从提示中获取值,因为隐藏完整回调是异步的,因此必须在回调本身内部处理提示结果,请参阅以下代码

函数a_ren(){
变量a=‘lorem’;
$('.cmenu').hide(函数(){
var res=提示('RENAME',a);
处理、提示、结果(res);
//res的作用域到此结束,在此函数之外未定义
});
}
$(文档).on('contextmenu','button',函数(e){
e、 预防默认值();
a_ren();
});
函数过程\提示\结果(结果){
//使用提示符中的结果值执行某些操作
控制台日志(结果);
}


单击写得好的问题^^
document.querySelector('button').addEventListener('contextmenu', (e) => {