我正在尝试通过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>
我正在寻找与上面的代码相同的变量处理。 这两个库是否有可能,或者您可以为替换标准警报提供更好的解决方案?
谢谢!
答案 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以及如何解决/拒绝问题进行一些研究时,我的解释会变得清晰起来。