用2進制和10進制實現checkBox

  待售  銷售中 已售完  二手房  分別代表多選框checkBox
    1     1       1      1   
  
   1就是 0001
   2就是 0010
   3就是 0011
   4就是 0100
   5就是 0101
   6就是 0110
   7就是 0111
   8就是 1000
   9就是 1001  
  10就是 1010
  11就是 1011
  12就是 1100
  13就是 1101
  14就是 1110
  15就是 1111 

二手房  1 被選中的有 1,3,5,7,9,11,13,15  只要是奇數 則選中
已售完  2 被選中的有 2,3,6,7,10,11,14,15     2的1次方開始 
銷售中  4 被選中的有 4,5,6,7,12,13,14,15     2的2次方開始
 待售   8 被選中的有 8,9,10,11,12,13,14,15   2的3次方開始

13&2 = 0的意思就是

1101
0010
-----
0000
所以結果就是0


10&2  = 2的意思就是

1010
0010
-----
0010
所以結果就是2


那麼是2的話,就能代表2的倍數爲是1;

10&3  =2 的意思就是

1010
0011
-----
0010 
所以10與3的值是2  那麼代表3的倍數是1?因爲不是2進制所以不能這樣取。

 

在JS中:

parseInt("", 2) 代表把字符串內的數字爲2進制,把他轉成10進制

parseInt(nember, 2) 代表把10進制轉成2進制

 

      //銷售狀態賦值
        function initSellStatus() {
            //銷售狀態  --獲取2進制再轉成10進制保存在數據庫中
            var sellStatusList = document.getElementsByName("CheckSellStatus");
            var totalSellStatul = "";
            for (var i = sellStatusList.length - 1; i >= 0; i--) {
                var singleStatus = $("#CheckSellStatus" + i).attr("checked") == true ? 1 : 0;
                totalSellStatul = totalSellStatul + singleStatus;
            }
            document.getElementById("SellStatus").value = parseInt(totalSellStatul, 2);
        }

 

             //初始化銷售狀態
            var sellStatusList = document.getElementsByName("CheckSellStatus");  //獲取多選框
            var cursellStatus = document.getElementById("SellStatus").value;     //獲取當前的銷售狀態值
            for (var i = 0; i < sellStatusList.length; i++) {                              
                var temp = Math.pow(2,i);                                       //2的I次方
                if (cursellStatus & temp) {                                     //按位與,1,2,4,8都是2的倍數,如果當前值與它,那麼值是0的話,則代表不選中,如果值不是0,則代表選中
                    document.getElementById("CheckSellStatus" + i).checked = true;     
                }
            }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章