-1

この質問に対する多くの回答を見つけましたが、どれが最良の回答であるか、どこに追加すればよいかわかりません..

これはコードです:

                             // 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 桁のみを表示または印刷するにはどうすればよいでしょうか。

ありがとう。

4

1 に答える 1

0

使用する.toFixed(2)

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

あなたのコードの問題は、入力しているように見える現在のテキストボックスの値を設定しようとしていることです..そのため、 backspace を押すと、再び上書きされ、無限ループに入ります..

ささいなタスクを完了するために多くのコードを書いたようです..

インライン 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);
}

フィドルをチェック

于 2012-12-05T23:07:34.120 に答える