如何使用 Sweet Alert 获取文本输入

how do I get a text input using Sweet Alert

因此,我使用带有 content: "input", 的 Sweet Alert 来输入消息,例如“hello world”,但结果值始终是 [object Promise]。我看过其他类似的问题,但对于我 javascript 有限的知识来说,它们太复杂了。我还查看了 Sweet Alert API 文档,但这些文档也没有定论。

如果有人在警告框中输入“test”,我希望它将“test”保存到 message 变量。

swal({
    title: "Please enter a personalized greeting:",
    content: "input",
})
.then((input) => {
    let message = (input);
});
if (message != "" && message != null) {
    setCookie("greeting", message);
    swal("your personalized message is:", message, "success");

您在 message 被设置到 Promise 链中之前使用它 - 然而,let message = (input); 创建了一个 message,它仅在 .then 中可用 -所以你声称的message变量是在你发布的代码之外“向上”创建的,甚至没有被你发布的代码触及

不确定为什么它是 Promise,因为您从未在您显示的代码中将可用于第二个 swal 调用的 message 设置为 Promise

像这样写你的代码,它会工作

swal({
    title: "Please enter a personalized greeting:",
    content: "input",
})
.then(message => {
    if (message != "" && message != null) {
        console.log("greeting", message);
        swal("your personalized message is:", message, "success");
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js" integrity="sha512-AA1Bzp5Q0K1KanKKmvN/4d3IRKVlv9PYgwFPvm32nPO6QS8yH1HO7LbgB1pgiOxPtfeg5zEn2ba64MUcqJx6CA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

根据最近的评论 - 这就是您使用以前的承诺的方式

let message;
const somePromise = swal({
    title: "Please enter a personalized greeting:",
    content: "input",
})
.then(input => message = input);


somePromise.then(() => {
    if (message != "" && message != null) {
        console.log("greeting", message);
        swal("your personalized message is:", message, "success");
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js" integrity="sha512-AA1Bzp5Q0K1KanKKmvN/4d3IRKVlv9PYgwFPvm32nPO6QS8yH1HO7LbgB1pgiOxPtfeg5zEn2ba64MUcqJx6CA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>