用闭包减少代码

做一个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 }

用闭包减少代码,布布扣,bubuko.com

时间: 2024-12-28 13:12:57

用闭包减少代码的相关文章

前端程序员的蜕变——JS的 event 对象属性、使用实例、兼容性处理(极大提高代码效率、减少代码量)

下面讨论一下 js 中的 Event 对象,主要从以下三个方面详细的描述(点击标题可跳转到对应部分): 1.什么是event 2.怎么用event,用他该注意什么,几个简单实际应用 3.event在不同浏览器的存在的兼容问题,及如何去解决  1.  什么是event Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态等等.说的通俗一点就是,event是JS的一个系统内置对象.平时无法使用,当DOM元素发生按键.鼠标等等各种事件时,系统会自动根据D

静态html页面 ul+li模拟table,减少代码冗余,列数切换更方便

先直接上效果图: 二.帖代码 1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="Author" content="haley"> 6 <meta name="Keywords" content="表格"&

Scala减少代码重复

高阶函数可以把其它函数当作函数参数,帮助我们减少代码重复,例如: object FileMatcher { private def fileHere = (new File(".\\file").listFiles()) def fileEnding(query : String) = { for(file <- fileHere if file.getName.endsWith(query)) yield file } def fileMathching(query: Stri

FindBugs 入门——帮你减少代码中的bug数

FindBugs 入门 FindBugs 作用 开发人员在开发了一部分代码后,可以使用FindBugs进行代码缺陷的检查.提高代码的质量,同时也可以减少测试人员给你报的bug数. 代码缺陷分类 根据缺陷的性质,大致可以分为下列几类 ·Bad practice  不好的做法 ·Correctness   可能有不正确 ·Dodgy code     糟糕的代码 ·Experimental  实验 ·Internationalization  国际化 ·Malicious code vulneril

Java Lombok 减少代码冗余 利刃

前言: 现在是ORM框架大行其道的时代,有着如Hibernate这样重量级的框架,提供Java<->数据的双向映射,也有如Mybatis这样的轻量级框架,提供Java<-数据的单方向映射, 无论使用的是哪种流行的框架,在其中都少不了Model类的编写,还有其中错综负责的getter/setter方法,这些getter/setter方法的存在,使得代码变得非常的臃肿.那么需要怎 么解决这个问题呢,便引入了这篇文章的主角Lombok. 1.下载: Lombok的官网地址是:http://pr

(原创)JS闭包看代码理解

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>JS闭包</title> <script type="text/javascript" src="

通过Pojo对象 field 属性加注解实现格式校验,极大的减少代码量

最近做一个接口,接受外系统的报文,通过XStream转换成java对象以后,需要对其中的字段做格式校验.要求如下 传统的方式是硬编码校验,但是对于field很多的情况,代码量暴增.容易出错. String storeCode = uHeader.getStoreCode(); if (StringUtils.isNotBlank(storeCode)) { ParamsUtil.getInstance().checkStrParam(result, storeCode, "抬头-参考订单门店号[

新兵易学,老兵易用----C++(C++11的学习整理---如何减少代码量,加强代码的可读性)

1.auto类型推导 auto推导最大的优势就是在拥有初始化表达式的复杂类型变量声明时简化代码. auto第二个优势就是免去了程序员在一些类型声明时的麻烦,或者避免一些在类型声明时的错误. auto第三个优势就是其“自适应”性能能够在一定程度上支持泛型的编程. auto的四个使用细则: 1)函数:不能是形参 2)结构体:不能是静态类型 3)数组:不能声明数组 4)模板实例化:不能作为模板参数 2.decltype推导细则 1)如果e是一个没有带括号的表姐符表达式或者类成员访问表达式,那么decl

swift里类方法和构造方法的使用来减少代码冗余提高开发效率

对于日常中重复性的可以抽取的实现尽量抽取 比如实现导航栏右侧 UIBarButtonItem的添加 如果使用 private func setupNavigateionBar(){ let btn = UIButton() btn.setImage(UIImage(named:"icon_shouye_off"), for: .normal) btn.sizeToFit() navigationItem.leftBarButtonItem = UIBarButtonItem(custo