利木
2017-01-12 17:09
第2章编程练习,我下载了官方答案,可是发现它也有这个问题。
官方答案:
function openWindon(){
if(confirm("确定打开新窗口吗?")){
var url = prompt("请输入一个网址","http://www.imooc.com/");
window.open( url,"_blank","toolbar=no, menubar=no, scrollbars=yes, width=400, height=400");
}
}
似乎你对 confirm 和 prompt 的理解有点混淆。
confirm 的返回值是 true 或者 false,对应到你的操作中,就是“打开”或者“不打开”新页面。
prompt 的返回值比较复杂一点,
如果你点击了“确定”,那么返回值就是输入框里的内容;
如果你点击了“取消”,那么返回值就是 null。
所以,
如果你在 confirm 的弹框上点了“确定”,那你就是选择了打开新页面。
在 prompt 的弹框里,无论是点“确定”或者“取消”,都只是修改了 url 的值而已,并不影响你打开新页面这个操作。
PS:这个代码中,如果你在 prompt 弹框时点击取消,window.open() 时的 url 应该是 null,所以应该也是打不开 imooc 这个网址的。
谢谢!你的解答完整又清晰!非常感谢!又重新写了一遍这次没有问题了!非常感谢你科普了我没有搞懂的地方【出现prompt的弹框;- 如果此时你点“取消”,照样是会打开新页面,但是没有网址,是一个空白的页面;】
在confirm的时候点击确认----这个函数的返回值是true或 false ,如果确定,返回true,就会执行if下面的2句代码,所以会打开新窗口。prompt(str1,str2)这个函数是获得用户的输入,其中str2是默认帮用户填的值。两个函数共同点是:用户确认前,啥都不能做。可以认为,这就是为什么放在一起介绍的原因吧。
只要你点了confirm中的确认返回true后,就一定要打开新窗口,prompt只是获得你要打开什么网址,跟是否打开无关。
JavaScript入门篇
739817 学习 · 9566 问题
相似问题