如何使用模态对话框库将用户输入存储为变量? (JavaScript)

时间:2019-04-14 19:12:51

标签: javascript modal-dialog alert sweetalert sweetalert2

我正在尝试通过Alert将用户输入保存为变量。我实际上可以使用提示通过JS完成此操作,但是不能使用 sweetalert sweetalert2 库实现类似的解决方案。

我阅读了他们的文档和示例:

https://sweetalert.js.org/guides/#advanced-examples
https://sweetalert2.github.io/#input-types

在最好的情况下,我的努力返回了 [对象承诺] 占位符而不是可变文本,但是通常,它根本不起作用: https://codepen.io/dimos082/pen/xeXmqK

以下是带有警报弹出窗口的JavaScript实现的实现: https://codepen.io/dimos082/pen/ROLEpo

<html>
<body>
    <button onclick="TellTale()">Tell me a story</button>
    <p id="Tale"></p>  <!-- Result from TellTale() will be put here as innerHTML-->  
</body>
<script> 
    function TellTale() {let KnightName = prompt("How do people call you, oh Noble Knight?");
    document.getElementById("Tale").innerHTML = "Once upon a time, there lived a champion, noble Sir " + KnightName + "."}
</script>
</html>

我正在寻找与上面的代码相同的变量处理。 这两个库是否有可能,或者您可以为替换标准警报提供更好的解决方案?

谢谢!

2 个答案:

答案 0 :(得分:1)

此问题的解决方案:

owner_type

答案 1 :(得分:0)

您对Promise的处理不正确。请研究Promises in ES5以获得参考。您为变量分配了Promise对象,该对象是异步的。它转到下一行,将对象本身而不是Promise的值附加到了下一行,因为那时未解决该值。使用Promise上的.then()方法解析Promise时,需要使用该值。这是与Promise一起使用的修改后的TellTale方法:

function TellTale() {
     let KnightName = swal("How do people call you, oh Noble Knight?", 
     {
        content: "input",
     }).then(function(value){
           document.getElementById("Tale").innerHTML = "Once upon a 
           time, there lived a champion, noble Sir " + value + ".";
     });
}

我的解释似乎有些复杂,但是当您对Promises以及如何解决/拒绝问题进行一些研究时,我的解释会变得清晰起来。