我正在嘗試在Javascript中循環中使用複合賦值,但它向我拋出NaN,我不知道爲什麼,因爲我對Javascript還是比較新的。我基本上是想轉換成一個jQuery驗證自定義方法是:https://github.com/pfwd/NHSNumber-Validation/blob/master/PHP/NHSValidation.class.phpJavascript中的複合賦值導致NaN
這裏是我到目前爲止
// Taken from https://github.com/pfwd/NHSNumber-Validation
var multipliers = {1:10, 2:9, 3:8, 4:7, 5:6, 6:5, 7:4, 8:3, 9:2};
var currentSum, currentNumber, currentMultiplier = 0;
//Get submitted NHS Number and remove whitespace
var givenNumber = value.replace(/\s+/g, '');
// Get length
var numberLength = givenNumber.length;
console.debug(givenNumber);
console.debug(numberLength);
// Number must be 10 digits in length
if (numberLength !== 10) {
return false;
}
// Check number
var checkNumber = value.substring(9);
console.debug(checkNumber);
// Loop over each number in the string and calculate the current sum
for (var i = 0; i <= 8; i++) {
var minus = i-1;
var plus = i+1;
currentNumber = value.charAt(i);
currentMultiplier = multipliers[plus];
currentSum += (currentNumber * currentMultiplier);
console.debug("i is " + i + " & current Num: " + currentNumber + " plus current multi: " + currentMultiplier + " plus " + currentSum);
}
var remainder = currentSum % 11;
var total = 11 - remainder;
console.debug(currentSum);
我不知道,如果加號和減號瓦爾是必要的,但他們我嘗試修復NaN問題時嘗試了一些東西。一個典型的控制檯調試行看起來是這樣的:
i is 0 & current Num: 1 plus current multi: 10 plus NaN
我也用同樣的NaN結果嘗試這樣做:
currentSum = currentSum + (currentNumber * currentMultiplier);
'變種X; x + = 0; // NaN' –