2012-12-05 168 views
-1

我發現了很多這個問題的答案,但我不知道這是最好的答案,或者在何處添加它..如何打印/顯示只有兩位小數(javascript/CSS/HTML)?

這是代碼:

       // HTML // 
<html> 

<head> 

<script type="text/javascript" language="Javascript"> 

var v1 = 0; 
var v2 = 0; 

var answer = 0; 

function calculate() { 

answer = v1/v2; 

var elem; 
elem = document.getElementById("v1"); 
elem.value = v1; 
elem = document.getElementById("v2"); 
elem.value = v2; 

elem = document.getElementById("answer"); 
elem.value = answer; 

} 

function setValue(elem) { 
var val = 0.0; 
if (elem.value != "") { 
val = parseFloat(elem.value); 
} 
else { 
val = 0.0; 
} 
switch (elem.id) { 
case "v1": v1 = val; break; 
case "v2": v2 = val; break; 
} 
calculate(); 
} 
</script> 

[..] 

</head> 
[...] 

       // HTML // 

[...] 

<form> 
<input type="text" id="v1" onKeyUp="javascript: setValue(this);"> 
<input type="text" id="v2" onKeyUp="javascript: setValue(this);"> 
<input type="text" id="answer" readonly> 
</form> 

[...] 

現在,什麼會使結果顯示或打印(我不知道哪一個是正確的)只有2位小數,應該放在哪裏?

謝謝。

回答

0

使用.toFixed(2)

(parseFloat(elem.value)).toFixed(2); 

與您的代碼的問題是你試圖設置當前文本框的價值,你似乎打字 ..所以,如果你打退格鍵,它是再次改寫並進入一個無限循環..

你似乎已經寫了很多的代碼來完成一項簡單的任務..

移動你的內嵌JavaScript和附加腳本本身的事件..

我已經做了一些修改你的代碼..

HTML

<input type="text" id="v1" value="0.00"> 
<input type="text" id="v2" value="0.00"> 
<input type="text" id="answer" readonly> 

的Javascript

var elem = document.getElementsByTagName('input'); 

for(var i =0;i< elem.length ; i++){ 
    elem[i].addEventListener("keyup", function(){ 
      setValue(this); 
    }); 
    elem[i].addEventListener("blur", function(){ 
      setCurrentValue(this); 
    }); 
} 

function setCurrentValue(elem){ 
    elem.value = parseFloat(elem.value).toFixed(2); 
} 

function calculate(v1,v2) { 
    answer = v2 == 0 ? 0 : (v1/v2); 
    var elem = document.getElementById("answer"); 
    elem.value = parseFloat(answer).toFixed(2);; 

} 

function setValue(elem) { 
    var v1 = document.getElementById('v1').value; 
    var v2 = document.getElementById('v2').value; 
    v1 = v1 == '' ? 0 : parseFloat(v1); 
    v2 = v2 == '' ? 0 : parseFloat(v2); 
    calculate(v1,v2); 
} 

Check Fiddle

+0

感謝,但只有改變輸入區域(v1和v2),這是更好,因爲它是。爲了確保我做得正確..我添加了'val =(parseFloat(elem.value))。toFixed(2);'而不是'val = parseFloat(elem.value);'還有:S,我有不知道爲什麼它保持刷新輸入字段,我甚至不能輸入11.1,我必須輸入111,然後點擊左箭頭添加點。 –

+0

非常感謝。在我理解它之前需要一些時間..目前它不計算任何東西,只要我刷新頁面就等待約1秒鐘(答案字段),之後NaN出現,並且在出現後不會改變我添加輸入..但我很確定我做錯了什麼。非常感謝。 –

相關問題