日期:2014-05-16  浏览次数:20318 次

javascript 传参时把0101010这样的字符串给转换了数字型吗?
JScript code
 $('#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 把数字当传参的话、给转换了?)



------解决方案--------------------
你用parseInt当然会解析成数字了
------解决方案--------------------
... name="+parseInt(val.id)+" ....

你既然不需要转换为数字,你上面 用parseInt干什么?
为什么不直接name="+val.id+" ....
------解决方案--------------------
。。。toString(8)是用8进制显示
你来个7干啥。。

你这样就控制传参就可以了
没必要转成Number再转回去。
------解决方案--------------------
JScript code

$('#test').append('<td><input type="checkbox"  onclick="t(&quot;' + val.id + '&quot;)" id="' + val.id + '"  value="' + val.id + '"/></td><td>' + val.name + '</td>');