我正在用 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
任何回应都将受到高度赞赏。谢谢你,托马斯