javascript - Sweet Alert JS无法获取输入变量

标签 javascript sweetalert

我正在使用Sweet Alert JS来提示窗口获取一些输入变量。 我试图在函数之外使用这些变量,它们被设置为 NULL,但是当我在函数内部使用它们时,它们被正确设置。 我读了一些有关回调函数的内容,但我不理解它们。

这是代码:

function change_meeting(event_id) {
    $('#event_change_data > p:nth-child(1)').empty();
    $('#event_change_data > p:nth-child(2)').empty();
    swal({
        title: "Change meeting date!",
        confirm: true,
        dangerMode: true,
    })
        .then(function(value) {
            swal({
                content: "input",
                title: "Insert date",
                text: "Day / Month / Year (dd/mm/yyyy)",
                confirm: true,
                dangerMode: true,
            })
                .then(function(value) {
                    $('#event_change_data > p:nth-child(1)').text(value);
                    //NOT NULL DATA
                    swal({
                        content: "input",
                        title: "Insert hour",
                        text: "Hour : Minutes (hh:mm)",
                        confirm: true,
                        dangerMode: true,
                    })
                        .then(function(value) {
                            $('#event_change_data > p:nth-child(2)').text(value);
                            //NOT NULL DATA
                        });
                });
        });
    var date = $('#event_change_data > p:nth-child(1)').text();
    var hour = $('#event_change_data > p:nth-child(2)').text();
    //NULL DATA
}

设置数据后,它在 HTML 标记中正确分配,但当我尝试获取它们时,它们为 NULL。 enter image description here 任何人都可以解释我为什么我没有正确获得这些变量? 举个例子是可以的。 感谢您的阅读!

最佳答案

欢迎来到 Promise 的世界。

您实现的 Swal 函数正在使用称为 Promise 的东西。

它的上下文与我们英语的 promise 类似。

因此,当您调用 Swal 函数 Javascript 时,它会向您 promise 返回好消息或坏消息。 (您可以在这里了解 Promise: https://codeburst.io/javascript-promises-explained-with-simple-real-life-analogies-dd6908092138 )

所以 .then 是当 Javascript 有好消息时将执行的东西,即。成功案例。 .cath 将在您有坏消息时执行。失败案例。

现在,当调用 Swal 时,您的实际执行尚未停止。那仍然有效。因此,紧接着 Swal 之后是下一行

var date = $('#event_change_data > p:nth-child(1)').text();
var hour = $('#event_change_data > p:nth-child(2)').text();

在等待消息到达时执行。 IE。没有内容分配给元素,因此您得到 Null。

想象一下,您是一名经理,您想要查看今天的出勤报告。你要求你的助手从开发人员那里获取它。当你的助理在另一层楼尝试与开发人员联系时,你能看到文件中的报告吗?不会。但是助理回来后,无论有没有报告,您都会收到回复。

关于javascript - Sweet Alert JS无法获取输入变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60523925/

相关文章:

javascript - 事件仅在单击两次时激活

javascript - 如何在甜蜜警报中显示我要上传的图像?

javascript - React 中的键盘快捷键,react-hotkeys 库

javascript - 带有旋转文本的 float 条形图xaxis标签-90对齐问题

javascript - 阻止组件加载后显示警报 `swal` (sweetalert)

javascript - 如何将 'svg'格式的图标添加到SweetAlert for Bootstrap?

javascript - SweetAlert2 添加动态选项来选择输入

javascript - 如何在 sweetalert 中设置字符限制?

javascript - 清除间隔逻辑问题

javascript - 单击同一个 div 中的 li 元素? JQuery/JavaScript