sex=parseInt(num.slice(14,17))%2; if(sex==0)    ///SEX:F 

rblGenderGroup[2].checked=true; } 
else ///SEX:M 

rblGenderGroup[1].checked=true; } 我用上述条件判断18位或15位的证件号中的获取性别的方法, 为什么不对呢 如410122198906101251,页面能清楚这位是男的;可 410322198601100830,确认为这位是女的,非常郁闷,不都是17位吗,都是奇数,为什么后面就查不出来呢,请高手指点,谢谢

解决方案 »

  1.   

    有一句改改,改成
    [code=JScript]
    sex=parseInt(num.slice(14,17),10)%2; 
      

  2.   

    错,有一句改改,改成 
     
    sex=parseInt(num.slice(14,18),10)%2; 
      

  3.   

    var sex=num.slice(14,17)%2;
    if(sex==0)    ///SEX:F 

    rblGenderGroup[2].checked=true; } 
    else ///SEX:M 

    rblGenderGroup[1].checked=true; } 
      

  4.   

    parseInt函数的问题,
    parseInt("01");//1
    parseInt("02");//2
    parseInt("03");//3
    parseInt("04");//4
    parseInt("05");//5
    parseInt("06");//6
    parseInt("07");//7
    JavaScript认为参数为八进制,因为有0前缀
    八进制的有效数字为0--7
    以下均为无效数字
    parseInt("08");//0
    parseInt("09");//0410322198601100830获取到的是083
    所以为无效数字,返回为0
    0%2还是0
    所以出现上述错误。
      

  5.   

    sex=parseInt(num.slice(14,17)); 语句改为:
    sex=parseInt(num.slice(14,17),10); 即可
      

  6.   

    谢谢各位专家,目前我自己通过以下方式解决的:if(num.length==15) // if id's length is 15 { sex=parseInt(num.substring(15,1))%2; if(sex==0) ///SEX:F { rblGenderGroup[2].checked=true; } else ///SEX:M { rblGenderGroup[1].checked=true; } 
    ..
     
    else if(num.length==18) // if id's length is 18 { sex=parseInt(num.substring(17,1))%2; if(sex==0) ///SEX:F { rblGenderGroup[2].checked=true; } else ///SEX:M { rblGenderGroup[1].checked=true; } 
     
      

  7.   

    其实你这个问题有两点,1是substring 范围是半闭半开区间
                         2是parentInt()在两位字符串的时候最好用parent(str,10)确保转成10进制