问答详情
源自:2-7 编程练习

为什么不能直接返回第一个if的else呢?求大神

<!DOCTYPE html>

<html>

 <head>

  <title> new document </title>  

  <meta http-equiv="Content-Type" content="text/html; charset=gbk"/>   

  <script type="text/javascript">  

    

   function openWindow(){

       var myname

      myname=confirm("do you want to open this web?" );

      if(myname=true)

      {var mybuzhidao

       mybuzhidao=prompt('http://wwww.imooc.com/');

      if(mybuzhidao!=null)

      { mybuzhidao.open("http://wwww.imooc.com/","_blank","width=400,height=500,menubar=no,toolbar=no");}

      else

      {alert("promot的再见")}

      }

      else

     { alert("第一个if的再见2")}

   

   }

    

  </script> 

 </head> 

 <body> 

 <input type="button" value="新窗口打开网站" onclick="openWindow()" /> 

 </body>

</html>

5801984e0001955403630134.jpg

5801984e0001af9203590156.jpg

5801984e0001518103550128.jpg



出现do you want to open this web的时候点取消但是还是会继续出现第二个prompt的提示框

正常的情况下不是应该直接现实else中的内容吗。。。

好晕啊 不知道哪里做错了

555555为什么提问还要积分啊。。心塞


提问者:卡兰尼克 2016-10-15 10:47

个回答

  • 從澪開始
    2016-10-15 12:39:05
    已采纳

    <!DOCTYPE html>
    <html>
     <head>
      <title> new document </title>  
      <meta http-equiv="Content-Type" content="text/html; charset=gbk"/>   
      <script type="text/javascript">  
        
           function openWindow(){
              var myname
              myname=confirm("do you want to open this web?" );
              if(myname=true){
                 var mybuzhidao
                 mybuzhidao=prompt('http://wwww.imooc.com/');
                 if(mybuzhidao!=null){ 
                   mybuzhidao.open("http://wwww.imooc.com/","_blank","width=400,height=500,menubar=no,toolbar=no");
                 }else{
                   alert("promot的再见")
                 }
              }else{ 
                alert("第一个if的再见2")
              }
           }
        
      </script> 
     </head> 
     <body> 
     <input type="button" value="新窗口打开网站" onclick="openWindow()" /> 
     </body>
    </html>

    首先整理下格式,方便阅读。或者应该说,在敲代码的时候就需要注意格式,方便自己审查代码,一个程序员的基本素质。

    下面加粗倾斜下划线,是你程序出错的主要原因。

    1、var myname   

    var mybuzhidao

    末尾没分号。虽然在JS里面,末尾无分号无伤大雅,但还是要记得写。以后踩一些【因为少个标点符号而出一些奇奇怪怪问题又找半天不知道代码哪出错】的坑,就会长记性了。另外不建议弄一些没意义的命名,初期练手代码量小。但如果养成习惯,后期代码量多的时候,没意义的命名加上无注释,你都不知道之前写的什么鬼。

    2、if(myname=true)

    【myname=true】  ?  你是想写 【myname==true】 吧。

    一个= 是赋值,两个= 才是比较。(虽然这里,myname本身就是一个true或者false的布尔型,不需要再做比较。直接写【if(myname)】就可以了。)

    所以你这里,myname是恒为true的,所以这一层的if_else_,else是永远进不去的。

    3、mybuzhidao=prompt('http://wwww.imooc.com/');

    题目要求是,默认值为'http://www.imooc.com/'(你写的4个w是什么鬼!),应该把链接地址放在第二个参数,第一个参数是提示。比如这样

    mybuzhidao=prompt("请输入网址:",'http://www.imooc.com/');

    默认值意思是,你如果没有其他值,那就用这个了。

    4、mybuzhidao.open("http://wwww.imooc.com/","_blank","width=400,height=500,menubar=no,toolbar=no");

    你竟然没问【为什么浏览窗口没弹出来】。

    让我自问自答一波。

    弹得出来就有鬼了!!

    mybuzhidao.open(...); 你的不知道 点 open 。。。。。。。。。。open毛线。 是【window.open(....)】你是要打开一个窗口,不是要打开【你的不知道】。

    第一个参数,按照题意,是要prompt对话框输入的值,也就是你的变量mybuzhidao。默认值是prompt的默认值,不是让你写死一个地址在这(还他喵的是4个w的地址)。

    改为:

    window.open(mybuzhidao,"_blank","width=400,height=500,menubar=no,toolbar=no");