Javascript Sweet alert JS无法获取输入变量

Javascript Sweet alert JS无法获取输入变量,javascript,sweetalert,Javascript,Sweetalert,我正在使用Sweet alert JS提示windows获取一些输入变量。 我试图在函数外使用这些变量,它们被设置为NULL,但当我在函数内使用它们时,它们被正确设置。 我读了一些关于回调函数的书,但我不理解它们 代码如下: function change_meeting(event_id) { $('#event_change_data > p:nth-child(1)').empty(); $('#event_change_data > p:nth-child(2

我正在使用
Sweet alert JS
提示windows获取一些输入变量。 我试图在函数外使用这些变量,它们被设置为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标记中被正确地命名,但是当我试图获取它们时,它们是空的。 有人能解释我为什么没有正确地得到这些变量吗? 举个例子是可能的。
谢谢你的阅读

这是因为您在设置p元素之前读取了该元素的文本

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);
                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
                    })
              .then(() => {
                // THIS SHOULD BE NOT NULL
                var date = $('#event_change_data > p:nth-child(1)').text();
                var hour = $('#event_change_data > p:nth-child(2)').text();
                // DO THE STUFF YOU WANT TO DO WITH DATE AND HOUR
              });
            });
    }); 

}

这是因为您在设置p元素之前读取了该元素的文本

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);
                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
                    })
              .then(() => {
                // THIS SHOULD BE NOT NULL
                var date = $('#event_change_data > p:nth-child(1)').text();
                var hour = $('#event_change_data > p:nth-child(2)').text();
                // DO THE STUFF YOU WANT TO DO WITH DATE AND HOUR
              });
            });
    }); 

}

欢迎来到承诺的世界

您已经实现的Swal函数使用了一种称为Promise的东西

它的上下文与我们英语的承诺相似

因此,当您调用Swal函数Javascript时,它会向您承诺返回好消息或坏消息。(您可以在此处了解承诺:)

所以,当Javascript给你带来好消息时,就会执行一些东西,比如成功案例。当你有坏消息(如失败案例)时,cath将执行

现在,当调用Swal时,实际执行并没有停止。这仍然有效。因此,在冲洗下一条管线后,应立即进行冲洗

var date = $('#event_change_data > p:nth-child(1)').text();
var hour = $('#event_change_data > p:nth-child(2)').text();
在等待消息到来时被处决。也就是说,没有为元素分配内容,因此您得到Null


想象一下,你是一名经理,你想看到今天的出席情况报告。你让你的助手从开发者那里得到它。当你的助手在另一层楼尝试与开发人员联系时,你能看到文件中的报告吗?没有。但在助手返回后,无论是否有报告,您都会得到他的回复。

欢迎来到承诺的世界

您已经实现的Swal函数使用了一种称为Promise的东西

它的上下文与我们英语的承诺相似

因此,当您调用Swal函数Javascript时,它会向您承诺返回好消息或坏消息。(您可以在此处了解承诺:)

所以,当Javascript给你带来好消息时,就会执行一些东西,比如成功案例。当你有坏消息(如失败案例)时,cath将执行

现在,当调用Swal时,实际执行并没有停止。这仍然有效。因此,在冲洗下一条管线后,应立即进行冲洗

var date = $('#event_change_data > p:nth-child(1)').text();
var hour = $('#event_change_data > p:nth-child(2)').text();
在等待消息到来时被处决。也就是说,没有为元素分配内容,因此您得到Null


想象一下,你是一名经理,你想看到今天的出席情况报告。你让你的助手从开发者那里得到它。当你的助手在另一层楼尝试与开发人员联系时,你能看到文件中的报告吗?没有。但是在助手返回后,无论是否有报告,您都会得到他的响应。

您是否尝试将
变量设置为
全局变量
。看起来您是在设置数据之前读取数据的(您使用的是承诺设置数据,它是异步的)。我尝试使用会话变量,将数据保存为html标记。。并且变量被设置为null@RohitTagadiyaI也这么认为,但是你能想出一些方法来获取变量吗?谢谢@DBS您是否尝试将
变量
设置为
全局变量
。看起来您正在读取设置前的数据(您正在使用承诺设置数据,它是异步的)。我尝试使用会话变量,将数据另存为html标记。。并且变量被设置为null@RohitTagadiyaI也这么认为,但是你能想出一些方法来获取变量吗?谢谢@星展银行