替指定的表单元素动态添加事件
为指定的表单元素动态添加事件
<html> <head> <title></title> <script> function init(){ var _obj = document.getElementById("ck"); var d=document.getElementById("myDate"); var args=[_obj,d]; // _obj.onclick=function(){bb(_obj,d)} 覆盖之前的onclick函数 Pen.util.addEvent(_obj,"onclick",bb,args); //不会覆盖之前的onclick函数 } function bb(){ if(arguments.length!=2) throw new Error("参数不正确!"); var obj=arguments[0]; var dat=arguments[1]; var date=new Date(); var month=date.getMonth()+1; var day=date.getDate(); if(month<10){ month='0'+month; } if(day<10){ day='0'+day; } var d=date.getFullYear()+"-"+month+"-"+day; if(obj.checked){ dat.value=d; }else{ dat.value=""; } } function aa(){ alert() } var Pen={}; Pen.util={ /** * 功能:为指定的表单元素动态添加事件 *@param obj 要为其添加事件的元素对象 *@param eventName 事件名称 *@param eventFunction 事件要执行的函数 *@param args 为函数传递的参数数组(多个参数都要放在args数组里面) */ addEvent:function(obj,eventName,eventFunction,args){ if(window.addEventListener) //firefox浏览器 { obj .addEventListener(eventName,function(){ exeFunc(eventFunction,args)}, false); } else //IE浏览器 { obj.attachEvent(eventName,function(){ exeFunc(eventFunction,args)}); } } }; var exeFunc=function(eventFunction,args){ if(args==undefined || args.length==0) eventFunction(); else if(args.length==1) eventFunction(args[0]); else if(args.length==2) eventFunction(args[0],args[1]); else if(args.length==3) eventFunction(args[0],args[1],args[2]); else if(args.length==4) eventFunction(args[0],args[1],args[2],args[3]); else if(args.length==5) eventFunction(args[0],args[1],args[2],args[3],args[4]); else if(args.length==6) eventFunction(args[0],args[1],args[2],args[3],args[4],args[5]); else if(args.length==7) eventFunction(args[0],args[1],args[2],args[3],args[4],args[5],args[6]); else if(args.length==8) eventFunction(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7]); else throw new Error("参数越界错误"); } </script> </head> <body onload="init()"> <input type="checkbox" id="ck" onclick="aa()"> <input type="text" id="myDate"> </body> </html>