【发布时间】:2013-09-09 15:39:59
【问题描述】:
我正在尝试显示一个 Javascript 提示以供用户输入数据(作为提示的用途)。但是,它不会显示。 window.alert 显示,window.confirm 也显示。但是,不及时。 这是我要运行的代码:
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 语句。第一个警报应显示“是”。但是,它会跳过提示行。下一个警报显示“未定义”。
现在,如果我唯一更改的是关键字提示,它将起作用,如下所示:
var is_expired = document.getElementById("is_expired").value;
if (is_expired == "yes") {
alert(is_expired);
var answer = confirm("Are you sure you?");
alert(answer);
}
当我运行它时,会出现确认框。如果我单击 Okay,则下一个警报会显示“true”,如果单击 Cancel,则警报会显示“false”。
所以,这里最大的收获是没有导致 Javascript 停止的语法错误。它实际上跳过了那一行并继续执行。那条线有什么问题?我检查了多个站点以确保它是正确的。 添加第二个“默认”参数也无济于事。我试过了。此外,没有 Javascript 错误表明问题。
我去了 here 并将其更改为我的代码(我将 is_expired 硬编码为是),它在那里工作。
任何帮助都会很棒。谢谢。
编辑:要清楚,我不依赖 W3school 的示例来准确,我使用他们的“试用”页面来测试我自己的代码。我也在 jfiddle 上做了这个,效果很好。使用控制台检查函数返回“未定义”。
EDIT2:实际上,从头开始。当控制台中没有命令时,我不小心再次按了 Enter。提示的实际输出是:
[12:07:55.940] [object Function]
【问题讨论】:
-
在这里工作正常:jsfiddle.net/j08691/zDZQK。你使用的是什么浏览器?你能在 jsFiddle 上重现这个问题吗?
-
页面上还有哪些其他 JavaScript?您是否有任何库可能会覆盖
window.prompt方法?console.log(window.prompt)显示什么? -
控制台中有任何警告吗? console.log(window.prompt)
-
@tryingToGetProgrammingStraight:他只是在使用他们的例子,而且他可能不知道。那不值得-1。
-
@Troncoso:您可以尝试一些事情。
delete window.prompt;应该删除该覆盖并替换原始方法。如果没有,您可以尝试从 iframe 中“窃取”它。有关更多信息,请参阅此答案:stackoverflow.com/a/7081490(只需将console替换为prompt):)
标签: javascript