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

为什么这么写不行?

   <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);}    括号必须包含调用的函数

正在回答

5 回答

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

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

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

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

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

深山小童

唯一有点疑问的是使用函数声明的函数,即使在window.onload内,会不会也会预先进行处理。
2016-04-13 回复 有任何疑惑可以回复我~

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

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

第一句

  window.onload=function(){

没有  }

所以会出现

Uncaught SyntaxError: Unexpected end of input 

这样的错误

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

Lshah 提问者

我不是问错在哪而是说为什么错了,我把}加在 addEvent(login_btn,"click",showLogin); addEvent(close,"click",hideLogin); 之前的。我发现加载这两行代码之前也就是说让window.onload=function()的花括号结束在这两行代码 addEvent(login_btn,"click",showLogin); addEvent(close,"click",hideLogin);之前为什么不行 。必须将这两行代码包含在内...不过还是很感谢你能够回答
2016-04-05 回复 有任何疑惑可以回复我~

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

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

Lshah 提问者

我不是问错在哪而是说为什么错了,我把}加在 addEvent(login_btn,"click",showLogin); addEvent(close,"click",hideLogin); 之前的。我发现加载这两行代码之前也就是说让window.onload=function()的花括号结束在这两行代码 addEvent(login_btn,"click",showLogin); addEvent(close,"click",hideLogin);之前为什么不行 。必须将这两行代码包含在内...不过还是很感谢你能够回答
2016-04-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
DOM事件探秘
  • 参与学习       99547    人
  • 解答问题       1197    个

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

进入课程

为什么这么写不行?

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