2017-06-21 83 views
0

我是新的,所以感謝您的耐心等待。 我找了很多答案但找不到,也許是因爲它太明顯了。基本的JavaScript函數返回級聯而不是算術和

在這種情況下的輸入x和y從<input type="number"..

此函數執行在按鈕點擊服用。

你能告訴我爲什麼它返回一個連接,例如: 33而不是6,45而不是9.

function sum(x,y) { 
     x = document.getElementById("x").value; 
     y = document.getElementById("y").value; 
     var answer = x+y; 

     document.getElementById("sum").innerHTML = answer; 

    } 

非常感謝提前。

+0

因爲你得到的值是字符串,你需要將它們轉換爲數字。單獨在SO上必須有一百萬個這樣的問題。現在尋找一個... – j08691

+0

.value總是返回一個字符串。所以告訴JS把它解釋爲例如數字。使用.... value * 1或parseInt或parseFloat,或... – newBee

回答

1

因爲當您在+運算符的任一側放置一個字符串時,它會執行連接。

"3" + "3" // "33" 

輸入的value屬性總是會給你一個字符串。

Convert the strings to numbers如果你想將它們加在一起。

+0

輸入的value屬性總是會給你一個字符串。 - 當輸入類型是「數字」時,奇數。 謝謝,這解釋了這個問題! –

3

您需要將其轉換爲數字。

function sum(x,y) { 
    x = document.getElementById("x").value; 
    y = document.getElementById("y").value; 
    var answer = Number(x)+Number(y); 

    document.getElementById("sum").innerHTML = answer; 

} 
+0

謝謝,這解決了它! –

1

出現這種情況怎麼一回事,因爲xy都是字符串,適當的與他們操作使用Number(x) + Number(y)parseFloat(x) + parseFloat(y)

0

您想使用parseInt功能實際上是字符串轉換爲整數,然後將它們添加這樣

function sum(x,y) { 
    x = parseInt(document.getElementById("x").value); 
    y = parseInt(document.getElementById("y").value); 
    var answer = x+y; 

    document.getElementById("sum").innerHTML = answer; 

}