Javascript:重用之道
近期写了大量的js,愈发觉得自己的代码过于冗余,所以,利用周末的时间研习代码重用之道,有了这篇博文所得:
重用代码:
1、尽量保证 HTML 代码结构一致,可以通过父级选取子元素
2、把核心主程序实现,用函数包起来
3、把每组里不同的值找出来,通过传参实现
示例:一个简单的计算器
通过效果图,我们可以看出,核心代码所实现的功能被多次重复使用,并且,html结构代码类似,此时,若是单独实现每个计算器的功能,则事倍功半,代码冗余;所以,这时我们可以考虑使用代码重用。
1# 尽量保证 HTML 代码结构一致,可以通过父级选取子元素
<ul id="container">
<li>
<button class="btn">+</button>
<button class="btn">0</button>
<button class="btn">-</button>
<strong>单价:</strong><span>12</span>
<strong>总计:</strong><span>0</span>
</li>
<li>
<button class="btn">+</button>
<button class="btn">0</button>
<button class="btn">-</button>
<strong>单价:</strong><span>22</span>
<strong>总计:</strong><span>0</span>
</li>
<li>
<button class="btn">+</button>
<button class="btn">0</button>
<button class="btn">-</button>
<strong>单价:</strong><span>32</span>
<strong>总计:</strong><span>0</span>
</li>
<li>
<button class="btn">+</button>
<button class="btn">0</button>
<button class="btn">-</button>
<strong>单价:</strong><span>42</span>
<strong>总计:</strong><span>0</span>
</li>
</ul>
2#把核心主程序实现,用函数包起来
function counter(oli){ var aBtns=oli.getElementsByTagName('button'); var aSpans=oli.getElementsByTagName('span'); /*件数*/
var oItem=aBtns[1].innerText; /*单价*/
var oUnit=aSpans[0].innerText;
/*总数*/
var oTotal=aSpans[1].innerText; /*+*/
aBtns[0].onclick=function(){
oItem++;
aBtns[1].innerText=oItem;
aSpans[1].innerText=oItem*oUnit;
} /*-*/
aBtns[2].onclick=function(){
oItem--;
if(oItem<0){
oItem=0;
alert('当前件数已为空');
}
aBtns[1].innerText=oItem;
aSpans[1].innerText=oItem*oUnit;
} }
3# 把每组里不同的值找出来,通过传参实现
这是代码重用比较关键的一步,分析发现,每个计算器都包含在结构相似的<li></li>之中,所以,可以把这些li包含在数组里面,然后通过遍历,传参,从而实现核心计算器主程序的调用:
var oUl=document.getElementById('container');
var aLi=oUl.getElementsByTagName('li'); for(var i=0;i<aLi.length;i++){ counter(aLi[i]); }
以上。
Javascript:重用之道的更多相关文章
- JavaScript之周道长浅谈变量使用中的坑
天空一声巨响,道长闪亮登场,飞花落叶,尘土飞扬,此处不应恐慌,用阅读变量的概念来提升气场. 1)变量的声明,使用一个变量之前应该先声明.变量是使用关键字var来声明的,如下: var number; ...
- 《JavaScript修炼之道》读书笔记
1.参考书目 入门:<JavaScript DOM编程艺术>第二版 进阶:<JavaScript高级程序设计>第二版.<JavaScript编程精粹> <Ja ...
- 大量Javascript/JQuery学习教程电子书合集
[推荐分享]大量Javascript/JQuery学习教程电子书合集,送给有需要的人 不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小 15天学会jQuery(完整版).pd ...
- [推荐分享]大量Javascript/JQuery学习教程电子书合集,送给有需要的人
不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小 15天学会jQuery(完整版).pdf 274.79 KB 21天学通JavaScript(第2版)-顾宁燕扫描版.pdf ...
- 【推荐分享】大量JavaScript/jQuery电子书籍教程pdf合集下载
不收藏是你的错^_^. 经证实,均可免费下载. 资源名称 资源大小 15天学会jQuery(完整版).pdf 274.79 KB 21天学通JavaScript(第2版)-顾宁燕扫描版.pdf ...
- javascript 词法结构小结
作为一名前端程序员,自然学习了一些框架,但是学的越多越发现自己基础的不足,于是想系统的学习一下js基础,然后把它记录下来. 如其他编程语言一样,词法结构是一门语言的基础,它规定了诸如如何给变量起名字. ...
- Java爬虫_资源网站爬取实战
对 http://bestcbooks.com/ 这个网站的书籍进行爬取 (爬取资源分享在结尾) 下面是通过一个URL获得其对应网页源码的方法 传入一个 url 返回其源码 (获得源码后,对源码进 ...
- JSP、servlet、SQL三者之间的数据传递
JSP.servlet.SQL三者之间的数据传递 博客分类: web开发 JSPservletSQL数据库连接池web开发 前言: 最近一直在做WEB开发,现总结一下这一段时间的体会和感触. 切记, ...
- 一道笔试题和UML思想 ~
一句软件工程界的名言,让我想起了一个和一道笔试题有关的故事.希望更多的人了解 UML 背后的思想比他的语法更重要,是笔者写作本文的一点小愿望. 一.从一句软件工程名言说起 对很多事情的处理上,东西方都 ...
随机推荐
- android4.4 settings 中控制卡1 卡2都振动
在package/app/Settings/src/com/android/settings/SoundSettings.java
- IIS无法启动问题的解决
IIS无法启动,显示“服务并未即使响应启动或控制请求”,我用两种办法都没有解决:1.把IIS卸载重装也不行:2.到服务中world wide web publishing服务也不能启动,提示127错误 ...
- WSAEventSelect
WSAEventSelect 是 WinSock 提供的一种异步事件通知I/O模型,与 WSAAsyncSelect模型有些类似. 该模型同样是接收 FD_XXX 之类的网络事件,但是是通 ...
- Function.prototype.bind
解析Function.prototype.bind 简介 对于一个给定的函数,创造一个绑定对象的新函数,这个函数和之前的函数功能一样,this值是它的第一个参数,其它参数,作为新的函数的给定参数. b ...
- ASP.NET MVC3.0或4.0设置二级域名的方法
之前我就想做二级域名指向同一个IP同一个程序无非是在路由匹配规则上做文章也就是对Url的重写的一种思路.我用了半天时间上网查阅了相关资料并做了Demo测试是完全 以的,在这分享给大家... 假如网站主 ...
- Ubuntu 添加sudo用户
第一种方法: 添加sudo用户 当你安装Ubuntu的时候,它会自动添加第一个用户到sudo组,允许这个用户通过键入其自身帐户密 码来获得超级用户(root)身份.然而,系统不会再自动添加其他的用户到 ...
- C# 解析嵌套的json文件.
概述 今天我同学问我如何转换json文件,没处理过,网上搜了一下,json转excel的很少,反过来倒是有许多人写了工具. json文件的结构大致是这样的: {, , }, , "type& ...
- 高仿QQ即时聊天软件开发系列之二登录窗口界面
继上一篇高仿QQ即时聊天软件开发系列之一开端之后,开始做登录窗口 废话不多说,先看效果,只有界面 可能还有一些细节地方没有做,例如那个LOGO嘛,不要在意这些细节 GIF虽短,可是这做起来真难,好吧因 ...
- spring 学习 AOP和IOC
自11开始接触三大框架,至今已俞5载, 当时风光无限的ssh,现在还在被广泛使用,并有扩大之势的只有spring了 spring主要特性,是广为使用的AOP(面向切面)和IOC(控制反转) 1.其中, ...
- [Leetcode][001] Two Sum (Java)
题目在这里: https://leetcode.com/problems/two-sum/ [标签]Array; Hash Table [个人分析] 这个题目,我感觉也可以算是空间换时间的例子.如果是 ...