请高手帮忙写一个javascript函数,
要求:调用函数的时候传入一个12位的纯数字字符串,按照EAN13的校验规则算出最后一位,然后返回完整的13位字符串
http://blog.csdn.net/jiafugui/archive/2010/11/23/6030594.aspx这里有EAN13的算法,也有源码,但不是javascript的,谢谢啦

解决方案 »

  1.   

    看着文档写的,试试成不
    [code=HTM]
    <!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>test</title>
    </head>
    <body>
    <script type="text/javascript">
    function check(sn){
    var r=0,r1=0,r2=0;
    var len = sn.length;
    for(var i=2;i<=len;i++){
    if(i%2)
    r1 += parseInt(sn.charAt(len-i),10);
    else
    r2 += parseInt(sn.charAt(len-i),10);
    }
    r = r1 + r2 * 3;
    r = Math.ceil(r / 10) * 10 - r;

    if(parseInt(sn.charAt(len-1))!=r)
    alert('校验错误,最后一位应该是'+r+'\r\n你的输入是:'+sn);
    else
    alert('正确');
    }
    check('6901234567892');
    check('6901234567891')
    </script>
    </body>
    </html>[/code]
      

  2.   

    没有格式?再发一次
    [code=HTM]
    <!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>test</title>
    </head>
    <body>
    <script type="text/javascript">
    function check(sn){
    var r=0,r1=0,r2=0;
    var len = sn.length;
    for(var i=2;i<=len;i++){
    if(i%2)
    r1 += parseInt(sn.charAt(len-i),10);
    else
    r2 += parseInt(sn.charAt(len-i),10);
    }
    r = r1 + r2 * 3;
    r = Math.ceil(r / 10) * 10 - r;

    if(parseInt(sn.charAt(len-1))!=r)
    alert('校验错误,最后一位应该是'+r+'\r\n你的输入是:'+sn);
    else
    alert('正确');
    }
    check('6901234567892');
    check('6901234567891')
    </script>
    </body>
    </html>[/code]
      

  3.   

    看错需求了……
    修改版<!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>test</title>
    </head>
    <body>
    <script type="text/javascript">
    function check(sn){
    var r=0,r1=0,r2=0;
    var len = sn.length;
    for(var i=1;i<=len;i++){
    if(i%2)
    r2 += parseInt(sn.charAt(len-i),10);
    else
    r1 += parseInt(sn.charAt(len-i),10);
    }
    r = r1 + r2 * 3;
    r = Math.ceil(r / 10) * 10 - r;
    return sn + r;
    }
    alert( check('690123456789'));
    </script>
    </body>
    </html>