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.pswp.cn/news/270584.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270584.shtml
英文地址,請注明出處:http://en.pswp.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…

網路知識:為什么寬帶越用越慢,看完你就明白了

目錄 一、辦理寬帶的時候要問清楚寬帶是不是獨享的! 二、定期重啟路由器 三、定期檢修寬帶線路 四、出口光貓或路由器的問題 每個家庭都有安裝寬帶,但是仍然有不少人不知道寬帶的基本常識,今天和大家一起來聊一聊。 首先寬帶,是一…