用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;     
                }
            }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值