问答详情
源自:2-4 JavaScript-提问(prompt 消息对话框)

例子里面的代码有bug

var myname=prompt("请输入你的姓名:");
if(myname!=null)
 {   alert("你好"+myname); }
else
 {  alert("你好 my friend.");  }

弹出的输入对话框不输入任何值点击“确认”的话,理论上应该是空值,应该弹出else后的语句才对。

可是不输入任何值单击“确认”却会弹出“你好”而不是“你好 my friend”。

而单击“取消”的时候应该关闭对话框不进行任何操作才对,可是却会弹出else后的语句也就是“你好 my friend”.

q1:意思是不是说单击“取消”才会返回null,而不输入任何内容单击“确定”却不会返回null?

q2:那么不输入任何值单击“确定”返回的到底是什么?

q3:如何才能做到不输入任何值单击“确认”会输出else后的语句?在单击“取消”之后对话框关闭不进行任何操作?

提问者:小仓老师 2016-06-13 15:50

个回答

  • Aprilis
    2016-06-13 16:54:12
    已采纳

    1. 取消返回null,点击确定按钮,文本框中的内容将作为函数返回值,也就是说你什么都没有输入的就是空字符‘’,这个跟null是不一样的概念。你可以去搜下空字符与null的区别。

    2. Chrome返回‘',IE10 有默认输入‘undefined’,所以就是文本框的内容,‘undefined’

    q3. 1. 简单实现你可以试试if(myname!=null&&myname!='undefined'&&myname!=''),仅供参考, 知道返回值后,你可以随便试。。

  • 淳简
    2016-06-13 16:14:05

    A1:对

    A2:返回的为空字符串

    A3:将if(myname!=null)修改成if(myname!="")