示例,可以修改一下
<!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>

解决方案 »

  1.   

    <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>
    <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>
      

  2.   

      大神果然厉害。。比我这个方法省了太多步骤了。看完之后豁然开朗。
    还有个问题。就是
    关于修改页面那我该怎么获得这个复选框的值呢。
    由于是变成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  
      

  3.   

    这个方法比较高端。厉害!能再厚颜的问问。。修改页面怎么做么。。花了很多时间效率一直不高。
    上面一段代码,提交成功之后插入的值,如下所示。
    也就是 第一位字节。‘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" : ""%>>]
      

  4.   

    代码贴错。。应该是这样
    <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" : ""%>>
      

  5.   

    转为2进制后在执行勾选就好了<script>
        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('内容不正确!')"/>
      

  6.   

    subscriber.getReservedSetting().charAt(1)   ==> 获取这个字段 我所插入的那个字节。
    取到16进制字符串之后  怎么利用它 去判断那些复选框是否为选中状态呢。
      

  7.   

    本帖最后由 showbo 于 2014-05-08 11:36:39 编辑
      

  8.   

    <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>
    <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>