我想要显示一个JavaScript提示框,让用户输入数据(就像常规的提示框一样)。但是它没有显示出来。window.alert和window.confirm都能够正常弹出,但是prompt却不行。 以下是我尝试运行的代码:
var is_expired = document.getElementById("is_expired").value;
if (is_expired == "yes") {
alert(is_expired);
var answer = prompt("Are you sure you?");
alert(answer);
}
当代码运行时,if语句被执行。第一个提示框应该会显示“yes”。但是,它跳过了提示输入的那一行代码。接下来的提示框会显示“Undefined”。
现在,如果我只将关键字prompt更改,如下所示,它就能工作:
var is_expired = document.getElementById("is_expired").value;
if (is_expired == "yes") {
alert(is_expired);
var answer = confirm("Are you sure you?");
alert(answer);
}
当我运行代码时,确认框会出现。如果我点击“确定”,那么下一个警告框就会显示“true”,如果我点击“取消”,警告框就会显示“false”。 因此,这里的重点是没有语法错误导致Javascript停止运行。它实际上跳过了那一行并继续执行。那一行有什么问题?我检查了多个网站以确保它是正确的。 添加第二个“default”参数也没有帮助。我尝试过了。而且,没有JavaScript错误来指示问题。 我去了这里,将其改为我的代码(我硬编码is_expired为yes),在那里它可以工作。 任何帮助都将是很棒的。谢谢。 编辑:要明确一点,我不依赖W3school的示例是准确的,我使用他们的“尝试一下”页面来测试自己的代码。我也在jFiddle上做过这个,它可以正常工作。使用控制台检查函数返回“未定义”。 编辑2:实际上,划掉那句话。当控制台中没有命令时,我不小心再次按下了回车键。prompt的实际输出是:
[12:07:55.940] [object Function]
window.prompt
方法的库吗?console.log(window.prompt)
会显示什么? - gen_Ericalert(window.prompt);
- 它会显示什么? - Yuriy Galanterdelete window.prompt;
可以删除覆盖并替换原始方法。如果不行,你可以尝试从 iframe 中“窃取”它。查看此答案获取更多信息:https://dev59.com/QWw05IYBdhLWcg3wsz7N#7081490(只需将console
替换为prompt
) :) - gen_Eric