gpt4 book ai didi

来自字符串变量的 Javascript 回调不起作用,尝试了正常的解决方案

转载 作者:行者123 更新时间:2023-11-30 08:05:09 25 4
gpt4 key购买 nike

我在这里阅读了他们建议使用类似内容的相关问题:

var functionName="myFunctionName";
window[functionName]();

好吧,我在这里,但它不起作用:

具有回调字符串变量的自定义模态框函数:

<script>
$(document).ready(function () {
//
// Events
//
$('#btnStep1').click(function () {
ylaConfirm('message', 'title', 'Y', 'N', 'doStep1');
});
//
//
// Functions
//
function doStep1() {
...
...
});
}
function ylaConfirm(_msg, _title, _btnYes, _btnNo, _callbackYes) {
bootbox.dialog({
message: _msg,
title: _title,
buttons: {
success: {
label: _btnYes,
className: "btn-success",
callback: function () {
window[_callbackYes]();
}
},
main: {
label: _btnNo,
className: "btn-primary"
}
}
});
}
});
//


</script>

Firebug 报告:未定义...

调用代码:

ylaConfirm('message', 'title', 'Y', 'N', 'doStep1');

想法?

最佳答案

三件事。

ylaConfirm('message', 'title', 'Y', 'N', 'doStep1');
  1. 当执行window[_callbackYes]();时,doStep1还没有定义。所以你可以在click函数之前定义它。
  2. 解决此问题的另一种方法是将 doStep1 定义为内联匿名函数,并直接将其调用为 _callbackYes() 而不是 window [_callbackYes]();。所以,ylaConfirm调用会变成这样

    ylaConfirm('message', 'title', 'Y', 'N', function(){
    //Include the actual definition of doStep1 here.
    });
  3. 正如@VoronoiPotato 在评论中提到的,您可以直接将函数作为第三个参数传递(或者您应该在 click 之前移动 doStep1 的定义或像这样定义 doStep1 var doStep1 = function() {..}).

    ylaConfirm('message', 'title', 'Y', 'N', doStep1);
    ...
    ...
    _callbackYes(); // Instead of window[_callbackYes]();

关于来自字符串变量的 Javascript 回调不起作用,尝试了正常的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19273291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com