0

我正在用 Javascript 编写信用卡号验证器。我希望它与 LUHN 变量进行检查,并且我想自己编写这些步骤,并且我尝试在 for 循环的帮助下执行此操作以练习它们。但是,我被困住了,我可以从这里开始使用一些友好的建议来做什么。我也对 for 循环的整个语法有些困扰,欢迎任何关于如何改进它们的提示。

项目在这里:http: //jsfiddle.net/tomasantonj/eZKMa/12/

这是我遇到问题的代码:

else if (filter.test(cardnumber.value))
{

  // 1. Begin with second to last number iterate, every second number with 2 until start.
    for(i = 0; i < cardnumber.length;i += 1){
    newnumbers = (i * 2);

  // 2. The result of the previous string to be added i+i+i.
    for (i = 0; i < newnumbers.length; i += 1){   
    sum1 = (i + i);


  // 3. Then add the remaining numbers together but skip the last which is a control number.
    for (i = 0; i < cardnumber.length; i += 1){
    sum2 = (i + i);

  // 4. Add sum1 and sum2 together

    var checksum = (sum1 + sum2);

    alert('the sum of x and y is: ' + checksum);
    // 5. Mod10 out of the checksum + cardnumber control number to get validity.
    if ((checksum + cardnumber[-0]) % 10 === 0){
            alert('LUHN checks out!');
    }
    else {
    alert('not yet');
    }
   }  
  } 
 }

我不确定如何提出正确的问题,但我猜我的问题是变量范围、for 循环和让 for 循环执行基于索引的查询。我知道这段代码又丑又长,这是我第二次尝试 JavaScript,所以请不要太介意。

运行此代码时,校验和未定义——有人知道这是为什么吗?可能与字符串和整数有关?:S

任何回应都将受到高度赞赏。谢谢你,托马斯

4

1 回答 1

1

您可以在所有嵌套的 for 循环中使用相同的变量“i”吗?这对我来说不好看!

于 2012-04-18T11:08:52.753 回答