2014-01-26 69 views
1

此代碼必須給出總現金的輸出,而是給出錯誤的輸出? 任何人都可以告訴我它有什麼問題。這段代碼在js中有什麼錯誤?

var cashRegister = { 
    total:0, 
    add: function(itemCost) 
    { 
     this.total += itemCost; 
    } 
}; 

var i; 

for (i=0; i<4; i++) 
{ 
    var a = prompt("Cost"); 
    cashRegister.add(a); 
} 
//call the add method for our items 


//Show the total bill 
console.log('Your bill is '+cashRegister.total); 
+0

這將有助於顯示實際與預期產出是什麼。如果你真的看過實際的輸出,我想你會得到一個很好的提示;) –

回答

2

您添加字符串。

代替:

this.total += itemCost; 

嘗試:

this.total += +itemCost; 
-1

你的問題是,您要添加字符串而非數字。

你可以做這樣的事情來解決這個問題: this.total += Number(itemCost);

http://jsfiddle.net/

3

,因爲它們都是字符串你需要parseInt函數的輸入值,您只CONCAT他們的方式。因此,嘗試:

this.total += parseInt(itemCost, 10); 

在這裏看到:http://jsfiddle.net/3x9AH/

0

你可以嘗試使用:

add: function(itemCost) 
{ 
    this.total += parseInt(itemCost); 
} 
0

您正試圖添加字符串。

您應該轉換爲數字,但要注意任意用戶輸入。

例如,沒有其他的答案將考慮到以下輸入:

  1. 「foo」 的
  2. 「+無限」
  3. 「-Infinity」

變化此行:

this.total += itemCost; 

到:

this.total += itemCost >> 0; 
0

使用parseFloat()功能,它用來解析字符串參數,並返回一個浮點數。

this.total += parseFloat(itemCost); 
相關問題