获取值的表单:
<input name="validatecard" type="text" id="myCardNumber">
<input onclick="isLuhn()" type="button" value="Check Credit Card" />
Javavascript:
function isLuhn(cardnumber) {
var number_element = document.getElementById('myCardNumber');
var cardnumber = number_element.value;
e= '';
i= '';
var sum1 = 0;
var sum2 = 0;
for(var len = cardnumber.length, i = len - 1; i >= 0; i -=2){
sum1 = sum1 + (+cardnumber[i]);
for (var len2 = cardnumber.length, e = len2 - 1; e > 0; e -=2){
sum2 = sum2 + (+cardnumber[e]);
}}}
所以现在这几乎正常,它正在迭代cardnumber变量,sum1和sum2接受值。但我仍在迭代变量cardnumber的相对长度,而不是其中的值。这是什么
(+cardnumber[i]);
应该怎么做?
答案 0 :(得分:2)
for(i = cardnumber.length; i > 0; i -=2){
for (e = cardnumber.length; e > 0; e -=2){
由于您的for
循环相反,循环条件为i > 0
和e > 0
,否则它们永远不会被执行
来自http://en.wikipedia.org/wiki/JavaScript_syntax#For_loop
JavaScript for循环的语法如下:
for(initial; condition; loop statement){
/ * 语句将每次执行 for {}循环周期,而 条件满足 * /
}
除了加载你的号码的i-th
数字,你应该这样做:
for(var len = cardnumber.length, i = len - 1; i >= 0; i -=2){
sum1 = sum1 * cardnumber[i];
请注意
0..n-1
而不是1..n
i = 0
时输入,以便i >= 0
无需拥有parseInt。由于乘法假设数字,Javascript会使您的i-th
字符成为数字。