if (v1!=""&v2!="")$("add"+t).value=cal54(v1,v2,2)/100 其中2--保留两位小数(后面需要/100==10的2次方) 可以任意设定例如: if (v1!=""&v2!="")$("add"+t).value=cal54(v1,v2,4)/10000 if (v1!=""&v2!="")$("add"+t).value=cal54(v1,v2,0)/1 ... 最好设定位数,否则计算结果容易出现无限循环小数
function cal54(v0,v1,v2,k){ var t=v0+v1-v2 for (var i=0;i<k;i++)t=t*10 if (t>=0 &(t-parseInt(t))>=0.5)t=parseInt(t)+1 else if (t<0 & (t-parseInt(t))<=-0.5)t=parseInt(t)-1 else t=parseInt(t) return t }function cla(_this){ var t=_this.id.substr(3); var v0=$("temp"+t).value,v1=$("inp"+t).value,v2=$("out"+t).value; if (v1!=""&v2!="")$("add"+t).value=cal54(v0,v1,v2,2)/100 }我添加了第三个数值v0 ,即t=v0+v1-v2 ,可得到的结果不对,即如v0=72,v1=8.111, v2=0.3 则结果为:727.811;正确应为79.811,反而变两个字符串相与了,, 这个怎么解决??
var strtxt1 = document.getElementById("txt1").value;
var strtxt2 = document.getElementById("txt2").value;
var objtxt3 = document.getElementById("txt3");
function Sumtxt()
{
objtxt3.value = parseInt(strtxt1) + parseInt(strtxt2);
}这里一定要注意。你在txt1及txt2中是否输入的数字。<input type="text" id="txt1" name="txt1">
<input type="text" id="txt2" name="txt2">
<input type="text" id="txt3" name="txt3" onblur="Sumtxt()">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>收支流水caiying2009</title>
</head><body>
<style>
#MyTitle input {width:70px;text-align:center;border:0;margin-bottom:10px;}
#MyDiv input {width:70px;text-align:right;border:0;border-bottom:1px #000 solid;margin-bottom:10px;}
</style>
<div id=MyTitle>
<input type="text" value=日期>
<input type="text" value=本日收入>
<input type="text" value=本日支出>
<input type="text" value=本日余额><br>
</div><div id=MyDiv>
<input id=day1 type="text" value=2009-03-10>
<input id=inp1 type="text">
<input id=out1 type="text">
<input id=add1 type="text"><br>
<input id=day2 type="text" value=2009-03-20>
<input id=inp2 type="text">
<input id=out2 type="text">
<input id=add2 type="text"><br>
<input id=day3 type="text" value=2009-03-30>
<input id=inp3 type="text">
<input id=out3 type="text" >
<input id=add3 type="text"><br>
</div>
<script language="javascript">
<!--
onload=init
function init(){
var obj=$("MyDiv")
var inputObj=obj.getElementsByTagName("input"),j=inputObj.length
for (var i=0;i<j;i++){
if(inputObj[i].id.indexOf("in")!=-1 ||inputObj[i].id.indexOf("out")!=-1){
inputObj[i].onchange=function (){test(this)}
inputObj[i].onkeyup=function (){test(this)}
inputObj[i].onblur=function(){cla(this)}
}
}
}function $(id){return document.getElementById(id)}function test(_this){_this.value=_this.value.replace(/[^\d|.]/g,"")}function cal54(v1,v2,k){
var t=v1-v2
for (var i=0;i<k;i++)t=t*10
if (t>=0 &(t-parseInt(t))>=0.5)t=parseInt(t)+1
else if (t<0 & (t-parseInt(t))<=-0.5)t=parseInt(t)-1
else t=parseInt(t)
return t
}function cla(_this){
var t=_this.id.substr(3);
var v1=$("inp"+t).value,v2=$("out"+t).value;
if (v1!=""&v2!="")$("add"+t).value=cal54(v1,v2,2)/100
}
//-->
</script>
</body></html>
if (v1!=""&v2!="")$("add"+t).value=cal54(v1,v2,2)/100
其中2--保留两位小数(后面需要/100==10的2次方)
可以任意设定例如:
if (v1!=""&v2!="")$("add"+t).value=cal54(v1,v2,4)/10000
if (v1!=""&v2!="")$("add"+t).value=cal54(v1,v2,0)/1
...
最好设定位数,否则计算结果容易出现无限循环小数
function cal54(v0,v1,v2,k){
var t=v0+v1-v2
for (var i=0;i<k;i++)t=t*10
if (t>=0 &(t-parseInt(t))>=0.5)t=parseInt(t)+1
else if (t<0 & (t-parseInt(t))<=-0.5)t=parseInt(t)-1
else t=parseInt(t)
return t
}function cla(_this){
var t=_this.id.substr(3);
var v0=$("temp"+t).value,v1=$("inp"+t).value,v2=$("out"+t).value;
if (v1!=""&v2!="")$("add"+t).value=cal54(v0,v1,v2,2)/100
}我添加了第三个数值v0 ,即t=v0+v1-v2 ,可得到的结果不对,即如v0=72,v1=8.111, v2=0.3 则结果为:727.811;正确应为79.811,反而变两个字符串相与了,,
这个怎么解决??