JS中循環邏輯和判斷邏輯的使用實例


源代碼見:

https://github.com/Embrace830/JSExample

&&||的理解

a || b:如果a是true,那么b不管是true還是false,都返回true。因此不用判斷b了,這個時候剛好判斷到a,因此返回a。

   如果a是false,那么就要判斷b,如果b是true,那么返回true,如果b是false,返回false,其實不就是返回b了嗎。

a && b:如果a是false,那么b不管是true還是false,都返回false,因此不用判斷b了,這個時候剛好判斷到a,因此返回a。

   如果a是true,那么就要在判斷b,和剛剛一樣,不管b是true是false,都返回b。

判斷邏輯,因為重置按鈕需要清空之前的style,這里用if語句也可以,但是比較繁瑣,所以采用了與門操作符,好處就是代碼量比較少。

this.index === btns.length - 1 && (content.style.cssText = "");
循環邏輯,因為5個按鈕的功能相似,故通過循環的到每個按鈕的屬性,並改變其對應的值。將 attribute及其對應的 style分別用數組儲存
 1 function changeAttr(elem, attr, sty) {
 2      elem.style[attr] = sty;
 3  }
 4      window.onload = function () {
 5          var content = document.getElementById('content');
 6          var btns = document.getElementsByClassName("btn");
 7          var styles = ["200px", "200px", "red", "none", "block"];
 8          var attrs = ["width", "height", "background", "display", "display"];
 9          for( var i = 0; i < btns.length; i++){
10             btns[i].index = i;
11             btns[i].onclick = function () {
12             this.index === btns.length - 1 && (content.style.cssText = "");
13             alert(this.index);
         alert(i);//5
14 changeAttr(content, attrs[this.index], styles[this.index]);//this.index改為i時功能無法實現,由於觸發onclick事件時,i已經完成遍歷值為5 15 } 16 } 17 }

對於上述代碼中的紅色問題,可用匿名函數(閉包)將每次遍歷的 i 值傳入函數,使其值始終保持在內存

1  for(var i=0;i<btn.length;i++){
2    (function(n){
3       btn[n].onclick=function(){
4         n===btn.length-1&&(show.style.cssText="");
5         change(show,style[n],attr[n]);
6       }
7     })(i)
8 }     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM