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

为什么这么写不行?

   <script>
      window.onload=function(){
          var login_btn=document.getElementById('login'),
              login_box=document.getElementById('login_box'),
              close=document.getElementById('close');
          // 封装添加事件监听程序
        function addEvent(ele,type,hander){
           // 执行代码  
           if(ele.addEventListener){
               ele.addEventListener(type,hander,false)
           }
           else if(ele.attachEvent){
               ele.attachEvent("on"+type,hander)
           }
           else{
               ele["on"+type]=hander;
           }
          }
        // 显示登录层函数
          function showLogin(){
              // 执行代码
           login_box.style.display="block";
            close.style.display="block";
          
        }
        // 隐藏登录层函数
        function hideLogin(){
          // 执行代码
          login_box.style.display="none";
        }
        //点击登录按钮显示登录层
        // 执行代码
        //点击关闭按钮隐藏登录层
        // 执行代码
      }
      addEvent(login_btn,"click",showLogin);
      addEvent(close,"click",hideLogin);


必须 
      addEvent(login_btn,"click",showLogin);
      addEvent(close,"click",hideLogin);}    括号必须包含调用的函数

提问者:Lshah 2016-04-05 13:11

个回答

  • 一只特立独行的doge
    2016-06-01 10:50:01

    文档流是自上而下加载,你如果放在window.onload外面,相当于页面一开始加载就在调用这两个函数,但是,在页面加载完之前,这两个函数都是没有意义的,所以才会没有反应。

  • 深山小童
    2016-04-13 14:08:00

    }是window.onload的结束括号,表示的意思是文档加载完毕再执行,如果将 addEvent(login_btn,"click",showLogin);
          addEvent(close,"click",hideLogin);

    这两句写在括号外,那么文档加载过程中,加载到此处就会执行这两句,而此时login_btn,close,函数都是未定义的,因为window.onload中的内容暂时不会执行,所以会没有效果,至于会出现什么错误,我也才初学,不清楚。

  • Lunaticf
    2016-04-10 01:32:18

    当然要包含在内啊 包含在内就是给这两个按钮添加了功能啊

  • Ayra
    2016-04-05 14:53:23

    第一句

      window.onload=function(){

    没有  }

    所以会出现

    Uncaught SyntaxError: Unexpected end of input 

    这样的错误

  • p_武一鸣_0
    2016-04-05 14:38:21

    最后面少了个 },我也遇到这个问题