待售 銷售中 已售完 二手房 分別代表多選框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;
}
}