-1

获取值的表单:

<input name="validatecard" type="text" id="myCardNumber"> 
<input onclick="isLuhn()" type="button" value="Check Credit Card" />

Javascript:

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]); 

应该做?

4

1 回答 1

2
for(i = cardnumber.length; i > 0;  i -=2){

for (e = cardnumber.length; e > 0; e -=2){

由于您的for循环是反向的,因此循环条件是i > 0e > 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];

注意

  1. 字符串的索引是0..n-1和不是1..n
  2. 循环也必须进入 wheni = 0以便 for 条件必须为 true fori >= 0

不需要 parseInt。由于乘法假定数字,Javascript 使您的i-th角色成为一个数字。

于 2012-04-20T08:38:35.957 回答