Javascript,for-loop,没有携带价值

时间:2012-04-20 08:36:32

标签: javascript for-loop decrement

获取值的表单:

<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]); 
应该怎么做?

1 个答案:

答案 0 :(得分: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. 循环也必须在i = 0时输入,以便i >= 0
  3. 的条件必须为true

    无需拥有parseInt。由于乘法假设数字,Javascript会使您的i-th字符成为数字。

相关问题