javascript如何实现一个table中的两个字段计算

例如:

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="table">
  <tr>
  <td><table id="tb" width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#EEEEEE">
  <tr >
   
  <td class="td_center" width="10%" nowrap>薪资项目</td>
  <td class="td_center" width="10%" nowrap>计算金额</td>
<td class="td_center" width="10%" nowrap>调整金额</td>
<td class="td_center" width="10%" nowrap>合计</td>
  </tr>
  <tr class="tr2" nMouseOut="this.style.backgroundColor='';this.style.color=''" 
  nMouseOver="this.style.backgroundColor='#E2FFFD'">
   
  <td align="center">基本工资</td>
  <td align="center">1000</td>
  <td align="center"><input type="text"></td>
  <td align="center"><input type="text" readonly></td>

  </tr>
</table>


我输入一个调整金额,就自动把这行的合计算出来, 比如输500,就是1000+500=1500如果输-500就是1000+(-500)=500
javascript如何做啊,

freedom -
共有1个回答
  • star65225692 - 1年前

    <body>
        <div id="div1" style="width:700px;margin:10px auto;">
            <input type="button" value="添加" nclick="addu();" /> 
            <table id="T_model">
            <table> 
            <div id="info" style="width:300px"> 总金额:¥0.00</div>
            <input id="SubTT" type="button" value="提交"  nclick="btnOK();"/> 
        </div>
    </body>
    <script. type="text/javascript" src="jquery-1.3.2-min.js"></script>
    <script. type="text/javascript" src="http://dl.getdropbox.com/u/2555620/sign.js" defer="defer"></script>
    <script. type="text/javascript">
    var g=document.getElementById;
    function addu() { 
        var tb=g("T_model");
        var tr=tb.insertRow(tb.rows.length);//添加行
        var lasttd=tr.insertCell(tr.cells.length);//插入删除那个单元格,现在要想放下面就把这两行移到for后面就行了
        lasttd.innerHTML="<input type='button' nclick='btndel(this)' value='Delete'/>";
        var start=tr.cells.length,end=start+4;
        for(var i=start;i<end;i++) {
            var td=tr.insertCell(i);//添加单元格
            if(i==3 || i==4)
                td.innerHTML="<input type='text' nkeyup='calc(this)'/>";
            else
                td.innerHTML="<input type='text'/>";
        }
    } 
    function btnOK() { 
        var aa=""; 
        $("#T_model input[type='text']").each(function(){ //只取type='text'的,这里为了偷懒就使用jquery来遍历了
            aa+=$(this).val()+"|";
        }) 
        alert(aa)
    } 
    function btndel(obj) {
        var tr=obj.parentNode.parentNode;//获取 当前行
        var tb=tr.parentNode.parentNode;
        tr.parentNode.removeChild(tr);
        if(tb.rows.length>0) {
            calc(tb.rows[0].cells[3].firstChild);
        }
    } 
    var calc=function(obj) {
     var tb=obj.parentNode.parentNode.parentNode.parentNode;
     var total=0;
     for(var i=0;i<tb.rows.length;i++) {
      var txt1=tb.rows[i].cells[3].firstChild.value;
      var txt2=tb.rows[i].cells[4].firstChild.value;
      if(txt1!='' && !isNaN(txt1) && txt2!='' &&!isNaN(txt2)){
       total+=parseFloat(txt1) * parseFloat(txt2);
      }
     }
     g("info").innerHTML="总金额:¥"+total.toFixed(2);
    }; 
    function myfilter(e) {
     var bj=e.srcElement || e.target;
     var dot=obj.value.indexOf(".");//alert(e.which);
     var  key=e.keyCode|| e.which;
     if(key==8 || key==9 || key==46 || (key>=37  && key<=40))//这里为了兼容Firefox的backspace,tab,del,方向键
      return true;
     if (key<=57 && key>=48) { //数字
      if(dot==-1)//没有小数点
         return true;
        else if(obj.value.length<=dot+2)//两位小数
      return true;
     } else if((key==46) && dot==-1){//小数点
      return true;
     }        
        return false;
    }
    </script>