我已经找到了很多这个问题的答案,但我不知道哪个是最好的答案或在哪里添加..
这是代码:
// 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 :(得分: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 强>