在confirm的時(shí)候點(diǎn)擊確認(rèn),在prompt再點(diǎn)擊取消,新窗口還是會(huì)跳出來(lái)怎么解決
第2章編程練習(xí),我下載了官方答案,可是發(fā)現(xiàn)它也有這個(gè)問(wèn)題。
? 官方答案:
function openWindon(){?
if(confirm("確定打開(kāi)新窗口嗎?")){
var url = prompt("請(qǐng)輸入一個(gè)網(wǎng)址","http://yifanck.cn/"); ?
window.open( url,"_blank","toolbar=no, menubar=no, scrollbars=yes, ?width=400, height=400");
}
} ?
?
2017-01-12
似乎你對(duì) confirm 和 prompt 的理解有點(diǎn)混淆。
confirm 的返回值是 true 或者 false,對(duì)應(yīng)到你的操作中,就是“打開(kāi)”或者“不打開(kāi)”新頁(yè)面。
prompt 的返回值比較復(fù)雜一點(diǎn),
如果你點(diǎn)擊了“確定”,那么返回值就是輸入框里的內(nèi)容;
如果你點(diǎn)擊了“取消”,那么返回值就是 null。
所以,
如果你在 confirm 的彈框上點(diǎn)了“確定”,那你就是選擇了打開(kāi)新頁(yè)面。
在?prompt 的彈框里,無(wú)論是點(diǎn)“確定”或者“取消”,都只是修改了 url 的值而已,并不影響你打開(kāi)新頁(yè)面這個(gè)操作。
PS:這個(gè)代碼中,如果你在 prompt 彈框時(shí)點(diǎn)擊取消,window.open() 時(shí)的 url 應(yīng)該是 null,所以應(yīng)該也是打不開(kāi) imooc 這個(gè)網(wǎng)址的。
2017-01-12
謝謝!你的解答完整又清晰!非常感謝!又重新寫(xiě)了一遍這次沒(méi)有問(wèn)題了!非常感謝你科普了我沒(méi)有搞懂的地方【出現(xiàn)prompt的彈框;- 如果此時(shí)你點(diǎn)“取消”,照樣是會(huì)打開(kāi)新頁(yè)面,但是沒(méi)有網(wǎng)址,是一個(gè)空白的頁(yè)面;】
2017-01-12
在confirm的時(shí)候點(diǎn)擊確認(rèn)----這個(gè)函數(shù)的返回值是true或 false ,如果確定,返回true,就會(huì)執(zhí)行if下面的2句代碼,所以會(huì)打開(kāi)新窗口。prompt(str1,str2)這個(gè)函數(shù)是獲得用戶的輸入,其中str2是默認(rèn)幫用戶填的值。兩個(gè)函數(shù)共同點(diǎn)是:用戶確認(rèn)前,啥都不能做??梢哉J(rèn)為,這就是為什么放在一起介紹的原因吧。
2017-01-12
只要你點(diǎn)了confirm中的確認(rèn)返回true后,就一定要打開(kāi)新窗口,prompt只是獲得你要打開(kāi)什么網(wǎng)址,跟是否打開(kāi)無(wú)關(guān)。