示例,可以修改一下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload=function(){
var check = document.getElementsByName('restrictedlevel');
var oBtn= document.getElementById('btn');
oBtn.onclick=function(){
var arr=[];
var finalValue='';
for(var i=0;i<check.length;i++)
{
if(check[i].checked)
arr.push(1);
else
arr.push(0);
}
finalValue=(parseInt(arr.join(''),2)||0).toString(16);
alert('入库值为:'+finalValue);
}
}</script>
</head><body>
<div id="reservedsetting4"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting3"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting2"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting1"><input type="checkbox" name="restrictedlevel" ></div>
<input type="button" value="点击得到入库值" id="btn"/>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
window.onload=function(){
var check = document.getElementsByName('restrictedlevel');
var oBtn= document.getElementById('btn');
oBtn.onclick=function(){
var arr=[];
var finalValue='';
for(var i=0;i<check.length;i++)
{
if(check[i].checked)
arr.push(1);
else
arr.push(0);
}
finalValue=(parseInt(arr.join(''),2)||0).toString(16);
alert('入库值为:'+finalValue);
}
}</script>
</head><body>
<div id="reservedsetting4"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting3"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting2"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting1"><input type="checkbox" name="restrictedlevel" ></div>
<input type="button" value="点击得到入库值" id="btn"/>
</body>
</html>
<div id="reservedsetting3"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting2"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting1"><input type="checkbox" name="restrictedlevel" ></div>
<button type="button" onclick="changeval()">确定</button>
<script type="text/javascript">
function changeval(){
var check = document.getElementsByName('restrictedlevel');
var arr = [8,4,2,1],l=0;
for(var i=check.length;i--;){
check[i].checked && (l+=arr[i]);
}
return l.toString(16).toUpperCase();
}
</script>
还有个问题。就是
关于修改页面那我该怎么获得这个复选框的值呢。
由于是变成16进制插入数据库的。那么获取这个复选框的值又要把它拆分开来。
点击修改之后,每个复选框会保持 选中状态。也就是获取之前插入数据库的16进制字符。
但是,我这边插入的字符串时拼接起来放进数据库的。 reservedSetting 为数据库字段名称。
form1.reservedSetting.value = "0" + rs + form1.msgSendRight.value + "0" + form1.xxxx.value + form1.xxxx.value + XXXXValue;
点击提交,插入成功之后。
字段值如下所示:
0C00102
我所插入的字节在第1位 "rs" 。其他几位字节已经被使用于其他功能。
那么我该怎么在修改页面取得这个值,并且将它分解开来,赋值给复选框。复选框保持选中状态。
后台存储这个字段的 实体类为 Subscriber 储存这个字段的表 为 subscriber
字段名称为 reservedsetting
上面一段代码,提交成功之后插入的值,如下所示。
也就是 第一位字节。‘c’ 其他几位字节已经使用于其他功能判断。
值为: 0C00102这个字段在数据库中存储为 reservedsetting 表为subscriber
实体类为 subscriber.java
<div id="param_receiver">
<input type="checkbox" name="restrictedlevel" id="reservedsetting4"
<%= ( 这里怎么取得数据库中的16进制的值并且分开给复选框& 0x08) == 8 ? "checked" : ""%>>]<input type="checkbox" name="restrictedlevel" id="reservedsetting3"
<%= ( 这里怎么取得数据库中的16进制的值并且分开给复选框& 0x04) == 4 ? "checked" : ""%>>]<input type="checkbox" name="restrictedlevel" id="reservedsetting4"
<%= ( 这里怎么取得数据库中的16进制的值并且分开给复选框& 0x02) == 2 ? "checked" : ""%>>]<input type="checkbox" name="restrictedlevel" id="reservedsetting4"
<%= ( 这里怎么取得数据库中的16进制的值并且分开给复选框& 0x01) == 1 ? "checked" : ""%>>]
<input type="checkbox" name="restrictedlevel" id="reservedsetting4"<%= ( 这里怎么取得数据库中的16进制的值并且分开给复选框 & 0x08) == 8 ? "checked" : ""%>>]
<input type="checkbox" name="restrictedlevel" id="reservedsetting3"<%= ( 这里怎么取得数据库中的16进制的值并且分开给复选框 & 0x04) == 4 ? "checked" : ""%>>]
<input type="checkbox" name="restrictedlevel" id="reservedsetting2"<%= ( 这里怎么取得数据库中的16进制的值并且分开给复选框 & 0x02) == 2 ? "checked" : ""%>>
<input type="checkbox" name="restrictedlevel" id="reservedsetting1"<%= ( 这里怎么取得数据库中的16进制的值并且分开给复选框 & 0x01) == 1 ? "checked" : ""%>>
function GetHex() {
var cbs = document.getElementsByName('restrictedlevel');
var bin = '';
for (var i = 0; i < cbs.length; i++) bin += cbs[i].checked ? '1' : '0';
var hex = parseInt(bin, 2).toString(16);
alert(hex);
return hex;
} function SetHex(hex) {
var bin = parseInt(hex, 16).toString(2);
var cbs = document.getElementsByName('restrictedlevel');
for (var i = bin.length; i < cbs.length; i++) bin = '0' + bin; //自动补全cbs.length个数
for (var i = 0; i < cbs.length; i++) cbs[i].checked = bin.charAt(i) == '1';
}
</script>
<div id="reservedsetting4"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting3"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting2"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting1"><input type="checkbox" name="restrictedlevel" ></div>
<input type="button" value="得到16进制" onclick="GetHex()"/>
<input type="button" value="设置16进制值" onclick="var v=prompt('请输入“0~9A-F”的字符','');if(/^[0-9a-f]$/i.test(v))SetHex(v);else alert('内容不正确!')"/>
取到16进制字符串之后 怎么利用它 去判断那些复选框是否为选中状态呢。
<div id="reservedsetting3"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting2"><input type="checkbox" name="restrictedlevel" ></div>
<div id="reservedsetting1"><input type="checkbox" name="restrictedlevel" ></div>
<script type="text/javascript">
var a = "F";//从数据库读出的值0,1,2....9,A,B,C,D,E,F
var arr=[1,2,4,8],n = parseInt(a,16),check = document.getElementsByName('restrictedlevel');
for(var i=arr.length;i--;){
if(n>=arr[i]){
n-=arr[i];
check[i].checked = true;
}
}
</script>