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

作为参数的函数里面能再传递参数吗,隐藏显示的函数里面我传了个参数,为啥不能这样写

<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);

            }

           // 执行代码  

      }

        // 显示登录层函数

      function showLogin(ele){

              ele.style.display="block";

      // 执行代码

        }

        // 隐藏登录层函数

        function hideLogin(ele){

            ele.style.display="none";

          // 执行代码

        }

        //点击登录按钮显示登录层 

        addEvent(login_btn,"click",showLogin(login_box));

        // 执行代码

        //点击关闭按钮隐藏登录层

        addEvent(close,"click",hideLogin(login_box));

        // 执行代码

      }

</script>


正在回答

1 回答

     window.onload=function(){

      var login_btn=document.getElementById('login'),

         login_box=document.getElementById('login_box'),

         close=document.getElementById('close');

      // 封装添加事件监听程序

        function addEvent(ele,type,hander,e){
            if(ele.addEventListener){
                ele.addEventListener(type,function(){
                  if(hander === showLogin && type === 'click'){
        showLogin(e);
      }else{
        hideLogin(e);
      }
                },false)
            }else if(ele.attachEvent){
                ele.attachEvent("on"+type,function(){
                  if(hander === showLogin && type === 'click'){
        showLogin(e);
      }else{
        hideLogin(e);
      }
                });
            }else{
                ele['on'+type] = function(){
                  if(hander === showLogin && type === 'click'){
        showLogin(e);
      }else{
        hideLogin(e);
      }
                };
            }

      
    }

        // 显示登录层函数

      function showLogin(e){

              e.style.display="block";

      // 执行代码

        }

        // 隐藏登录层函数

        function hideLogin(e){

            e.style.display="none";

          // 执行代码

        }

        //点击登录按钮显示登录层 

        addEvent(login_btn,'click',showLogin,login_box);

        // 执行代码

        //点击关闭按钮隐藏登录层

        addEvent(close,'click',hideLogin,login_box);

        // 执行代码

      }

JS代码可以如上

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

慕婉清4886767 提问者

好像似乎是明白了
2016-07-12 回复 有任何疑惑可以回复我~
#2

NemoOTZ_03565218 回复 慕婉清4886767 提问者

因为函数名作为参数的时候被引用的是函数体,所以不能直接像你原来那样写,那样是不会读login_box的参数的
2016-07-14 回复 有任何疑惑可以回复我~
#3

慕婉清4886767 提问者 回复 NemoOTZ_03565218

明白了,谢谢
2016-07-15 回复 有任何疑惑可以回复我~
#4

慕粉3274123 回复 NemoOTZ_03565218

请问一下,这里问什么能写四个参数得啊?addEvent(login_btn,'click',showLogin,login_box); 不是只能写三个么?
2016-07-31 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

作为参数的函数里面能再传递参数吗,隐藏显示的函数里面我传了个参数,为啥不能这样写

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