-1

値を取得するフォーム:

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

Java スクリプト:

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. i = 0for 条件が true でなければならないため、ループは when にも入る必要があります。i >= 0

parseInt を持つ必要はありません。掛け算は数を前提としているため、Javascript はi-th文字を数にします。

于 2012-04-20T08:38:35.957 に答える