用javascript改變onclick調用的函數


正需要做這個功能,發現不是自己想象中的那樣.在網上找了一些資料,終於找到了解決辦法.
首先列出一些錯誤的方法吧.(這里設obj代表你所要引用的對象.obj = document.getElementById("........");)
       1.obj.οnclick="f_aa()";
       2.obj.οnclick=f_aa();
       3.if(window.attachEvent()){
               obj.attachEvent("onclick",f_aa());//或obj.attachEvent("onclick",function(){f_aa();});
          }else{
                obj.addEventListener("click",function(){.........},false);
           }
        4.一種網上叫閉包的方法,但覺得也不管用.
             但如果要給第二次的函數傳遞參數,就需要用到閉包。代碼如下:

                <html>
                <head>
                 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
                 <script type="text/javascript">
                     function click_action(){
                         alert('第一次');
                          var click_action2 = alertMsg("第二次了!");
                           document.getElementById("enjoy").onclick = click_action2 ; //不可以.
                      }

                     function alertMsg(t) {
                            return function(){
                            alert(t);
                         }
                     }
                     </script>
                     </head>
                     <body>
                       <a id="enjoy" οnclick="click_action()" href="javascript:void(0);">點我</a>
                     </body>
                     </html>


我試驗成功的方法是:
1.假如所調用的函數沒有參數
          obj.οnclick=f_aa;      //f_aa為一函數名,這里沒有左右小括號!
2.所調用的函數有參數
           obj.οnclick=new Function("f_aa("+i+")");

另外,把onclick事件置空為(即禁用onclick)
           obj.οnclick=null;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM