JS点击事件的赋值

 最近在写网页的时候,为了缩减代码的重复,提高代码的利用率,我把经常用的代码封装成一个方法,后面需要用的时候直接调用。

但是我在js的点击事件上遇到了这样一个问题:点击事件onclick用函数赋值的时候,并未给点击事件赋值,而是自己执行了函数。

我的代码如下:
 

window.onload=function(){
	var gdenglu=document.getElementById('gdenglu');
	var udenglu=document.getElementById('udenglu');
	var guser=document.getElementsByClassName('guser')[0];
	var user=document.getElementsByClassName('user')[0];
	var swopnav=function(a,b){
		a.style.zIndex=1;
		b.style.zIndex=0;
		console.log("123123");
	}
	
	//12-14行代码未能给点击事件正确赋值
	guser.onclick=swopnac(guser,user);
	user.onclick=swopnac(user,guser);
	
	//以下注释的为正确代码
	/* gdenglu.onclick=function(){
		swopnav(guser,user);
	};
	udenglu.onclick=function(){
		swopnav(user,guser);
	} */
	
};

 以上代码执行后,点击了没有反应,并且一开始控制台就有了123123

解决方法!

通过浏览器F12断点一步一步查询后发现:

  1. 点击事件如果赋值的函数是需要传参数的,则不会给点击事件赋值函数对象,而是函数自己本身会自动执行(故控制台会有123123),并且点击事件没有赋值,为null。
  2. 如果赋值的函数有参数,又想让它能够生效,则可以写:
     
    对象.onclick=function(){
        函数名(参数);
    };

  3. 如果函数本身不需要传递参数,则 
     
    对象.onclick=函数名;

    就可以生效。(注意,函数名不要加括号)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值