2012-01-02 6 views
2

私はJSに新しいですので、優しいしてください。このコードで何が問題になっていますか?私はいくつかのフィールドからテキストを取得し、それらをまとめて結果を表示していると思います。代わりに.text財産の単純なJavascriptフォームから返されるNaNのみ取得することができます

<html> 
<head> 

<script type="text/javascript"> 
function displaySum() 
{ 
var number1 = parseInt(document.getElementById("number1").text); 
var number2 = parseInt(document.getElementById("number2").text); 
var number3 = parseInt(document.getElementById("number3").text); 
var number4 = parseInt(document.getElementById("number4").text); 
var number5 = parseInt(document.getElementById("number5").text); 
var sum = eval(number1 + number2 + number3 + number4 + number5); 

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

} 
</script> 
</head> 
<body> 
<form> 
First Number: <input type="text' name="number1" id="number1" /><br /> 
<p id="numberOne"></p> 
Second Number: <input type="text' name="number2" id="number2" /><br /> 
Third Number: <input type="text' name="number3" id="number3" /><br /> 
Fourth Number: <input type="text' name="number4" id="number4" /><br /> 
Fifth Number: <input type="text' name="number5" id="number5" /><br /> 
<button type="button" onclick="displaySum()">Display Sum</button> 
<p id="showsum"></p> 
</form> 
</body> 
</html> 
+6

あなたが新しいと言うので、私は穏やかになるでしょう:なぜあなたは 'eval'を使っていますか? –

+1

また、パースベース10の場合は、parseIntを気にしないでください。文字列に1を掛けると、先行ゼロで始まる場合でも、基数10をintに変換します。 (0xで始まる場合を除いて、16進数として解析されます) –

+3

"美しく動作する"という回答が得られたら、それをupvoteして受け入れます。 – Pointy

答えて

5

、あなたは.valueをしたいです。また、第2基数パラメータparseInt()を使用して、先行ゼロの8進数の誤った誤った解析を防止します。

var number1 = parseInt(document.getElementById("number1").value, 10); 
var number2 = parseInt(document.getElementById("number2").value, 10); 
// etc.. 

// Don't eval(), just add them. 
var sum = number1 + number2 + number3 + number4 + number5; 

Here's the full solution in action on jsFiddle。

+0

ああ...美しく働いています。ありがとうございます。 – Geekender