Sweet alert JS 获取不到输入变量
Sweet alert JS cannot get input variable
我正在使用 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 标记中正确分配,但当我尝试获取它们时,它们为 NULL。
任何人都可以向我解释为什么我没有正确获取这些变量?
举个例子是可能的。
感谢阅读!
那是因为你在 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 它向您承诺 return 好消息或坏消息。 (您可以在此处了解 Promises: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。
把它想象成您是一名经理,您想要查看今天的出勤报告。你让你的助手从开发人员那里得到它。当您的助手在另一层试图与开发人员联系时,您能否看到文件中的报告?没有。但是你会在他 return 有或没有报告后得到助理的回复。
我正在使用 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 标记中正确分配,但当我尝试获取它们时,它们为 NULL。
那是因为你在 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 它向您承诺 return 好消息或坏消息。 (您可以在此处了解 Promises: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。
把它想象成您是一名经理,您想要查看今天的出勤报告。你让你的助手从开发人员那里得到它。当您的助手在另一层试图与开发人员联系时,您能否看到文件中的报告?没有。但是你会在他 return 有或没有报告后得到助理的回复。