2013-12-14 34 views
0

我想在每次檢查時添加一些書籍的價格,但我遇到問題。 它只是添加一個字符串。例如,當我選擇一本書(10 $)時,價格變爲10,當我選擇另一本書(20 $)時,它變成1020,依此類推...在Javascript中添加數字時遇到麻煩?

我的代碼: 對於第一本書:

<input 
    name="bookList" 
    type="checkbox" 
    id="bookList_1" 
    onChange=" 
    if (document.getElementById('bookList_1').checked) { 
    document.getElementById('priceDes').innerHTML=' total: '; 
    document.getElementById('price').innerHTML+=10; 
    } 
    " 
    value="book1" 
> 

對於書二:

<input 
    name="bookList" 
    type="checkbox" 
    id="bookList_2" 
    onChange=" 
    if (document.getElementById('bookList_2').checked) { 
     document.getElementById('priceDes').innerHTML=' total: '; 
     document.getElementById('price').innerHTML+=20; 
    } 
    " 
    value="book1" 
> 

而且價格和priceDes是<p>標籤... 感謝您的解決方案;)

+2

當你「添加」到字符串時,你期望什麼?先將它們轉換爲數字。 – cHao

+1

嘗試'document.getElementById('price')。innerHTML = parseInt(document.getElementById('price')。innerHTML)+10;' – tewathia

+0

@tewathia我正在寫確切的代碼作爲答案,但是您先寫了它。請發佈它作爲答案。 –

回答

0

document.getElementById('price').innerHTML=Number(document.getElementById('price').innerHTML)+20;

-1

InnerHTML是一個字符串。 +運算符也是JavaScript中的字符串連接運算符。所以,首先「施放」這些值。

簡單的方法在JavaScript中以 「鑄造」 數字字符串:1乘:

var rv = 1*a.innerHTML + 1*b.innerHTML; 

或者,使用Number構造:

var rv = Number(a.innerHTML) + Number(b.innerHTML); 
+0

'+ a.innerHTML'也應該有效。 – cHao

1

這是因爲你是串聯的,而不是字符串,添加數字。 「10」 +「20」給「1020」,而不是30

嘗試: document.getElementById('price').innerHTML=parseInt(document.getElementById('pr‌​ice').innerHTML)+10;

小心這雖然,它只會如果您p標籤具有唯一的HTML裏面的數字工作。 parseInt('10$')給出10,但parseInt('$10')給出NaN。您可以試用number-type input標籤。

+0

非常感謝ü:)這是工作! ...也是你的最後提示...我也加上0我的p標籤作爲默認... –