$('#provinceList').change(function(){
    
     $('#cityList').children().eq(0).siblings().remove();
     //根据选中的省份IdCode加载城市列表
     $.ajax({
     url:'/listAJAX.action',
     data:{parentId:$(this).val()},
     type:'POST',
     dataType:'json',
     success:function(data){
     var cityListhtml='';
     $('#test').children().remove();
     $.each(data.categoryList,function(key,val){

      $("#test").append("<tr><td><input type='checkbox' id="+val.name+" name="+parseInt(val.id)+" value="+val.id+" onclick='tl("+parseInt(val.id)+")'/></td><td>"+val.name+"</td></tr>");// 添加输入的值到show末尾
    

     });
    
     //$('#test').append(cityListhtml);
     }
    });
    });})function tl(id){
   alert(id);
}
<table  id="test" ></table> ajax 从后台获取一个list的集合类   里面有id 和name 属性 注:id 值的范围是从01001010 这样  一共八位 不足补0的id值  然后遍历给一个table里追加tr td 和checkbox 
  然后写了个 测试代码function tl(id){}那个、   弹出来的并不是01001010 这样的数字  而是9697697这样的数字  我想从checkbox上 点击了就获取到该值、  用了 String(val.id)  也不好使、
  
  FF debug 模式下    checkbox 里的tl("01001010")  是这样的  并没错、
  我测试的代码该如何修改才能得到 01001010 这样的呢?(个人觉得是不是javascript 把数字当传参的话、给转换了?)

解决方案 »

  1.   

    parseInt(numString, [radix])参数
    numString必选项。要转换为数字的字符串。radix可选项。在 2 和 36 之间的表示 numString 所保存数字的进制的值。如果没有提供,则前缀为 '0x' 的字符串被当作十六进制,前缀为 '0' 的字符串被当作八进制。所有其它字符串都被当作是十进制的。
      

  2.   

       alert(parseInt("01001010",10))
      

  3.   

    你的调用在什么地方【tl函数】你既然知道传tl("01001010")没问题,那就不是传参的问题了啊。。
      

  4.   


    拼凑 table 的时候  在里面的内容追加了checkbox   里面加了onclick 方法 然后点击就可以弹出来
      

  5.   

    你用parseInt当然会解析成数字了
      

  6.   

    onclick='tl("+parseInt(val.id)+")'
    是你自己要传parseInt后的数据给他的啊~~~!
    所以你能做的就是
    val.id
    or
    parseInt(val.id).toString(8)
      

  7.   

    ... name="+parseInt(val.id)+" ....你既然不需要转换为数字,你上面 用parseInt干什么?
    为什么不直接name="+val.id+" ....
      

  8.   

    $("#test").append("<td><input type='checkbox'  onclick='t("+val.id+")' id="+val.id+"  value="+val.id+"/></td><td>"+val.name+"</td>");现在改成一样的追加代码
    我在帮别人调、  主要是我这边好使  、他那边 却弹 33287这样的数字  而不是0101001、
      

  9.   

    改8进制了 说明还是传的是数字
    ------
    用我给你的方法吧。toString(8)下
      

  10.   

    使用 您的  parseInt(val.id).toString(8)0101001   字符串出的是101001  去掉了前面的字符0  当字符串变到 0101008 变成了305220字符位数是7  不好意思
    然后又使用 parseInt(val.id).toString(7)试了下、还是全部是 不是想要的数字
      

  11.   

    toString(8)是用8进制显示
    你来个7干啥。。你这样就控制传参就可以了
    没必要转成Number再转回去。
      

  12.   


    $('#test').append('<td><input type="checkbox"  onclick="t(&quot;' + val.id + '&quot;)" id="' + val.id + '"  value="' + val.id + '"/></td><td>' + val.name + '</td>');参数要传递字符串,不是数值,用引号引起来。
      

  13.   

    好使了、 谢谢您 、 原来还得用这样来弄单引号啊、 犀利的眼神也谢谢各位的参与回答帮忙、感激不尽、结贴、
    总结: 在使用append 拼凑字符串的时候  不乱用“ ”  而使用 &quot; 转义
      

  14.   

    感觉总结的不完整、在自定义的 function tl(id){  alert(id); }因为javascript 是弱类型。 所以 javascript 并不知道你要传递是数字还是字符串 所以 字符串要用引号引起来、 而append 追加字符串的时候 根据单双引 写拼凑的字符串 而有的时候需要&quot;
    这样的转义字符的、