待售 销售中 已售完 二手房 分别代表多选框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;
}
}