-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);

您的代码的问题是您正在尝试设置似乎正在输入的当前文本框的值。因此,如果您按退格键,它会再次被覆盖并进入无限循环..

您似乎已经编写了很多代码来完成一项微不足道的任务..

移动您的内联 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 回答