if...else..的错误用法

1.最近在写js代码完成一个前段DOM操作的函数时,自己错误的使用了if..else..控制体。为什么是错误的呢?看看我的

代码你就明白了:

 1  document.getElementsByClassName('eButton')[0].οnclick=function(){
 2    var checked=document.getElementsByClassName('checked');
 3      var eButton=document.getElementsByClassName('eButton')[0];
 4    if(checked.length==0){
 5     alert('请选择要编辑的联系人!');
 6      }else{
 7          if(checked.length >2){
 8                 alert('每次编辑只能选择一条记录');
 9          }else{
10                 if(checked[0].childNodes[0].id=='check-all'){
11                     var email=checked[1].parentNode.nextElementSibling.nextElementSibling.innerHTML;
12                     var name=checked[1].parentNode.nextElementSibling.innerHTML;
13                     document.getElementsByClassName('edit_contact_name')[0].value=name;
14                     document.getElementsByClassName('edit_contact_email')[0].value=email;
15                     var group=checked[1].parentNode.nextElementSibling.nextElementSibling.nextElementSibling
16                     if(group.innerHTML !="default"){
17                         var group_id=group.getAttribute('group_id')
18                         document.getElementsByClassName('edit_contact_group_name')[0].value=id;
19                     }
20                     $('#edit_contact').modal();
21                 }else{
22                     if(checked.length ==2){
23                         alert('每次编辑只能选择一条记录');
24                     }else{
25                         var email=checked[0].parentNode.nextElementSibling.nextElementSibling.innerHTML;
26                         var name=checked[0].parentNode.nextElementSibling.innerHTML;
27                         document.getElementsByClassName('edit_contact_name')[0].value=name;
28                         document.getElementsByClassName('edit_contact_email')[0].value=email;
29                         var group=checked[0].parentNode.nextElementSibling.nextElementSibling.nextElementSibling
30                         if(group.innerHTML !="default"){
31                             var group_id=group.getAttribute('group_id')
32                             document.getElementsByClassName('edit_contact_group_name')[0].value=id;
33                         }
34                         $('#edit_contact').modal();
35                     }
36                 }
37        }
38    }
39     };

哈哈,看到自己写的这些代码,突然感觉这个函数一定很厉害。整个函数被if..else..搞得乱七八糟的,开始思考为什么当时要用if..else

,其实当时只是考虑到这个逻辑中有大概三四种不同的条件,要执行三四种运算,而且每次只能执行一种情况(执行完就到函数结尾),这些就是程序的执行流程。有了这个流程,自己开始考虑怎么把代码改改,改的一目了然,改的易于维护。这个时候自己自然而言的想到了"return"这个关键字,使用”return“后就有了下面的代码:

document.getElementsByClassName('eButton')[0].οnclick=function(){var checked=document.getElementsByClassName('checked');var eButton=document.getElementsByClassName('eButton')[0];if(checked.length==0){alert('请选择要编辑的联系人!');return;}if(checked.length ==1){var email=checked[0].parentNode.nextElementSibling.nextElementSibling.innerHTML;var name=checked[0].parentNode.nextElementSibling.innerHTML;document.getElementsByClassName('edit_contact_name')[0].value=name;document.getElementsByClassName('edit_contact_email')[0].value=email;var group=checked[0].parentNode.nextElementSibling.nextElementSibling.nextElementSiblingif(group.innerHTML !="default"){var group_id=group.getAttribute('group_id')document.getElementsByClassName('edit_contact_group_name')[0].value=id;}$('#edit_contact').modal();return;}if(checked.length ==2){if(checked[0].childNodes[0].id=='check-all'){var email=checked[1].parentNode.nextElementSibling.nextElementSibling.innerHTML;var name=checked[1].parentNode.nextElementSibling.innerHTML;document.getElementsByClassName('edit_contact_name')[0].value=name;document.getElementsByClassName('edit_contact_email')[0].value=email;var group=checked[1].parentNode.nextElementSibling.nextElementSibling.nextElementSiblingif(group.innerHTML !="default"){var group_id=group.getAttribute('group_id')document.getElementsByClassName('edit_contact_group_name')[0].value=id;}$('#edit_contact').modal();return;}alert('每次编辑只能选择一条记录');return;}if(checked.length >2){alert('每次编辑只能选择一条记录');}
};

下面这些条件罗列起来代码就清晰多了:

1.checked.length ==0

2.checked.length ==1

3.checked.length ==2

4.checked.length > 2

 

接下来把重复的代码封装到函数中(去除重复)得到代码:

function get_edit_modal_content(node_num,checked){var email=checked[node_num].parentNode.nextElementSibling.nextElementSibling.innerHTML;var name=checked[node_num].parentNode.nextElementSibling.innerHTML;var contact_id=checked[node_num].parentNode.nextElementSibling.getAttribute('contact_id')var regular_name=/[\u4E00-\u9FA5\uF900-\uFA2D\w]*/;name=regular_name.exec(name)[0];document.getElementsByClassName('edit_contact_id')[0].value=contact_id;document.getElementsByClassName('edit_contact_name')[0].value=name;document.getElementsByClassName('edit_contact_email')[0].value=email;var group=checked[node_num].parentNode.nextElementSibling.nextElementSibling.nextElementSiblingif(group.innerHTML !="default"){var group_id=group.getAttribute('group_id')document.getElementsByClassName('edit_contact_group_name')[0].value=group_id;}}document.getElementsByClassName('eButton')[0].οnclick=function(){var checked=document.getElementsByClassName('checked');if(checked.length==0){alert('请选择要编辑的联系人!');return;}if(checked.length==1){get_edit_modal_content(0,checked);$('#edit_contact').modal();return;}if(checked.length==2){if(checked[0].childNodes[0].id=='check-all'){get_edit_modal_content(1,checked);$('#edit_contact').modal();return;}alert('每次编辑只能选择一条记录');return;}if(checked.length >2){alert('每次编辑只能选择一条记录');return;}};

最终代码变得简洁易于维护了,看着也赏心悦目了,嘎嘎.......

转载于:https://www.cnblogs.com/haohaodehao/p/6026667.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git服务器报错:host key for (ip地址) has changed and you have requested strict checking

一:报错提示 如下: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key …

软件:常用 Linux 软件汇总,值得收藏

目录 1、音频软件 2、聊天软件 3、数据备份与恢复 4、桌面个性化工具 5、开发必备 6、 电子书工具 7、 编辑器软件 8、教育软件 9、电子邮件软件 10、文件管理器 11、娱乐游戏 12、 图形工具 13、互联网浏览 14、 办公效率工具 15、 生产力效率工具 16、 安全防护 17、文件共享…

java上下文即ServletContext

上下文即ServletContext,是一个全du局的储存信zhi息的空间,服务器启动,其就dao存zhuan在,服务器关闭,其才释放。 所有用户共用一个ServletContext。所以,为了节省空间,提高效率,ServletContext中…

数据帧,数据包,报文段,报文,分组,数据包的概念和区别

应用层——消息传输层——数据段(segment)网络层——分组、数据包(packet)链路层——帧(frame)物理层——P-PDU(bit)分组、包,packet,信息在互联网当中传输的单元,网络层…

python开源自动化测试平台_8款开源自动化测试框架,速速收藏

原标题:8款开源自动化测试框架,速速收藏来源:http://www.51testing.com/近年来, 自动化测试越来越热门,该领域新的挑战和机遇也在同步产生,尤其是AI,RPA和机器学习,可以预见会在几年…

SpringBoot集成Redis用法笔记

今天给大家整理一下SpringBoot集成Redis用法笔记,希望对大家能有所帮助!一、Redis优点介绍1、速度快不需要等待磁盘的IO,在内存之间进行的数据存储和查询,速度非常快。当然,缓存的数据总量不能太大,因为受到…

tomcat和servlet的关系

tomcat和servlet的关系 Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器上的组件. Servlet最常见的用途是扩展Java Web服务器功能,提…

Linux常用远程连接工具介绍,总有一款适合你

目录 1、xshell 2、winscp 3、PuTTY 4、MobaXterm 5、FinalShell 今天给大家推荐Linux常用远程连接工具,希望对大家能有所帮助! 1、xshell 介绍: xshell是一个非常强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Windows平台的TEL…

python高性能写法_py 高性能低级,高级写法思考

这里所谓的低级,高级是指封装抽象的程度。低级指os.fork()高级是指 multiprocessing包一般根据业务需求,一个主进程负责维护接收, 不同的子进程处理不同的需求。根据各同需求组合多进程多线程多进程+多线程协程也可基于uvloop事件…

Linux远程管理协议相关知识介绍

一、什么是远程管理远程管理,实际上就是计算机(服务器)之间通过网络进行数据传输(信息交换)的过程,与浏览器需要 HTTP 协议(超文本传输协议)浏览网页一样,远程管理同样需…

使用ArcGIS JavaScript API 3.18 加载天地图

对于中国开发者在创建GIS应用的时候,往往比较头疼的是底图资源的缺乏。其实国家测绘地信局就提供一个很好的免费资源:天地图。使用ArcGIS API的开发人员可以直接利用该资源作为地图应用的底图。 ArcGIS JavaScript API最近新推出了3.18版本。所以下面示例…

潜力的监控mysql_Grafana 数据库监控平台

Grafana 数据库监控平台简介Grafanademo 地址:官方demo文档可以下载pdf离线阅读Percona监控和管理(PMM)是一个用于管理和监控MySQL和MongoDB性能的开源平台。它由Percona与托管数据库服务,支持和咨询领域的专家合作开发。PMM是一种免费的开源解决方案&am…

PC软件:推荐七款Windows下宝藏软件

目录 一、uTools 效率神器 二、Groupy 窗口切换神器 三、Revo Uninstaller 卸载神器 四、Universal Viewer 五、VectorMagic 六、QuickLook 文件预览神器 七、Bandizip 压缩神器 今天给大家推荐七款Windows下软件,每一个都值得拥有。 一、uTools 效率神器 一个可以帮…

职坐标 MySQL视频_测试工具之MySQLSlap使用实例

myisam摘要: 一、Mysqlslap介绍   mysqlslap是MySQL5.1之后自带的benchmark基准测试工具,类似Apache Bench负载产生工具,生成schema,装载数据,执行benckmark和查询数据,语法简单,灵活&#xf…

Linux计划任务(at,crontab)

在LINUX中,我们通过crontab和at这两个东西来实现 at:它是一个可以处理仅执行一次就结束的指令 crontab:它是会把你指定的工作或任务,比如:脚本等,按照你设定的周期一直循环执行下去 1.at计划任务的使用 语…

硬件:笔记本电脑7大分类总结,看完你就明白了

目录 游戏本 超极本 轻薄本 学生本 商务本 二合一电脑 上网本 今天给大家分享笔记本电脑7大场景分类,看完你就明白了! 游戏本 游戏本最早由外星人和微星推出,在90年代就引起了众多游戏玩家的热捧。目前游戏本在笔记本电脑市场可谓是超级火爆&…

数字反转

3.数字反转 Description: 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。 Input&#xf…

网路知识:为什么宽带越用越慢,看完你就明白了

目录 一、办理宽带的时候要问清楚宽带是不是独享的! 二、定期重启路由器 三、定期检修宽带线路 四、出口光猫或路由器的问题 每个家庭都有安装宽带,但是仍然有不少人不知道宽带的基本常识,今天和大家一起来聊一聊。 首先宽带,是一…