用闭包减少代码

本文介绍了一种利用JavaScript闭包来简化RadioButton点击事件处理的方法,通过将重复的事件处理逻辑封装进闭包中,实现了代码的整洁和复用。

 

做一个radiolist控制textbox显示隐藏的功能,最初的代码:

rblSecurityCameras = document.getElementsByName("<%=rblSecurityCameras.UniqueID %>");
        txtSecurityCameras = document.getElementById("<%=txtSecurityCameras.ClientID %>");


        for (i in rblSecurityCameras) {
            rblSecurityCameras[i].onclick = function(){
                if (this.value == "2" && this.checked) {
                    txtSecurityCameras.style.display = 'none';
                }
                else if (this.value == "1" && this.checked) {
                    txtSecurityCameras.style.display = '';
                }
};
             if (rblSecurityCameras[i].value == "2" && rblSecurityCameras[i].checked) {
                    txtSecurityCameras.style.display = 'none';
                }
                else if (rblSecurityCameras[i].value == "1" && rblSecurityCameras[i].checked) {
                    txtSecurityCameras.style.display = '';
                }
        }

点击事件和load的过程的代码是相同的,有代码洁癖的我就不干了。

使用闭包

 1 rblSecurityCameras = document.getElementsByName("<%=rblSecurityCameras.UniqueID %>");
 2         txtSecurityCameras = document.getElementById("<%=txtSecurityCameras.ClientID %>");
 3 
 4         var mm = function(obj, txt) {
 5             return (function() {
 6                 if (obj.value == "2" && obj.checked) {
 7                     txt.style.display = 'none';
 8                 }
 9                 else if (obj.value == "1" && obj.checked) {
10                     txt.style.display = '';
11                 }
12             });
13         };
14 
15         for (i in rblSecurityCameras) {
16             rblSecurityCameras[i].onclick = mm(rblSecurityCameras[i], txtSecurityCameras);
17             mm(rblSecurityCameras[i], txtSecurityCameras)();
18         }

 

转载于:https://www.cnblogs.com/405464904/p/3740484.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值