为了账号安全,请及时绑定邮箱和手机立即绑定

在confirm的时候点击确认,在prompt再点击取消,新窗口还是会跳出来怎么解决

第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");

}

}  

 


正在回答

4 回答

似乎你对 confirm 和 prompt 的理解有点混淆。

  • confirm 的返回值是 true 或者 false,对应到你的操作中,就是“打开”或者“不打开”新页面。

  • prompt 的返回值比较复杂一点,

    • 如果你点击了“确定”,那么返回值就是输入框里的内容;

    • 如果你点击了“取消”,那么返回值就是 null。

所以,

  • 如果你在 confirm 的弹框上点了“确定”,那你就是选择了打开新页面。

  • 在 prompt 的弹框里,无论是点“确定”或者“取消”,都只是修改了 url 的值而已,并不影响你打开新页面这个操作。

PS:这个代码中,如果你在 prompt 弹框时点击取消,window.open() 时的 url 应该是 null,所以应该也是打不开 imooc 这个网址的。

1 回复 有任何疑惑可以回复我~
#1

利木 提问者

谢谢你!!【这个代码中,如果你在 prompt 弹框时点击取消,window.open() 时的 url 应该是 null,所以应该也是打不开 imooc 这个网址的。】我就是把官方的答案复制到编辑器里,然后在prompt弹框时点击了取消,但是还是弹出了imooc这个网址的。请问应该怎么解决呢?
2017-01-12 回复 有任何疑惑可以回复我~
#2

慕丝8281456 回复 利木 提问者

- 第一个弹出的框是confirm的, - 如果点“取消”,就不会有任何后续了; - 如果点“确定”,就进入了if语句,会出现prompt的弹框; - 如果此时你点“取消”,照样是会打开新页面,但是没有网址,是一个空白的页面; - 如果你点“确定”,就能正常打开www.imooc.com这个网址。
2017-01-12 回复 有任何疑惑可以回复我~
#3

慕丝8281456 回复 慕丝8281456

function openWindon()。所以你在点击时是否没有调用这个函数,而是调用了自己写的函数?
2017-01-12 回复 有任何疑惑可以回复我~
#4

利木 提问者 回复 慕丝8281456

谢谢!你的解答完整又清晰!非常感谢!又重新写了一遍这次没有问题了!非常感谢你科普了我没有搞懂的地方【出现prompt的弹框;- 如果此时你点“取消”,照样是会打开新页面,但是没有网址,是一个空白的页面;】(刚刚忘了点回复……)(删不掉没点回复的那条好难受_(:з」∠)_)
2017-01-12 回复 有任何疑惑可以回复我~
#5

慕丝8281456 回复 利木 提问者

不客气,共同进步!
2017-01-12 回复 有任何疑惑可以回复我~
查看2条回复

谢谢!你的解答完整又清晰!非常感谢!又重新写了一遍这次没有问题了!非常感谢你科普了我没有搞懂的地方【出现prompt的弹框;- 如果此时你点“取消”,照样是会打开新页面,但是没有网址,是一个空白的页面;】

0 回复 有任何疑惑可以回复我~

在confirm的时候点击确认----这个函数的返回值是true或 false ,如果确定,返回true,就会执行if下面的2句代码,所以会打开新窗口。prompt(str1,str2)这个函数是获得用户的输入,其中str2是默认帮用户填的值。两个函数共同点是:用户确认前,啥都不能做。可以认为,这就是为什么放在一起介绍的原因吧。


0 回复 有任何疑惑可以回复我~

只要你点了confirm中的确认返回true后,就一定要打开新窗口,prompt只是获得你要打开什么网址,跟是否打开无关。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

在confirm的时候点击确认,在prompt再点击取消,新窗口还是会跳出来怎么解决

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信