那肯定是累加的了,因为你的公式是:
text1 = text1.value+text2.value+text3.value肯定每次改变都会累加。
除非是:
text1 = text1(原始值)+text2.value+text3.value公式不变,就没法改

解决方案 »

  1.   

    将程序改为:
    <input type=text name="text1" id=text1>
    <input type=text name="text2" id=text2 onpropertychange="chg(myform.text1.value)">
    <input type=text name="text3" id=text3 onpropertychange="chg(myform.text1.value)">function chg(oldstring)
    {     var val1;
          var val2;
          var newval;
          val1 = myform.text2.value ;  
          val2 = myform.text3.value ;  
            newval = val1 + val2 ;
            myform.text1.value =newval;
           }
         
        }
    这样就可以了,因为你的 form.text1.value = oldstring + newval;将原来text1的值也加了上去,所以应改为myform.text1.value =newval;试试吧!!
      

  2.   

    这样试试?
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD><BODY>
    <FORM METHOD=POST ACTION="" name="myform">
    <input type=text name="text1" id=text1 onblur="myform.text4.value=this.value">
    <input type=text name="text2" id=text2 onchange="chg(myform.text4.value)">
    <input type=text name="text3" id=text3 onchange="chg(myform.text4.value)">
    <input type=hidden name="text4" >
    </FORM>
    </BODY>
    </HTML>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function chg(oldstring)
    {     var val1;
          var val2;
          var newval;
          val1 = (parseInt(myform.text2.value)=="NaN")?"0":parseInt(myform.text2.value) ;  
          val2 = (parseInt(myform.text3.value).toString()=="NaN")?"0":parseInt(myform.text3.value) ; 
      //alert(val1);alert(val2);
      //alert("aa");
            newval = parseInt(val1) + parseInt(val2) ;
            //alert("newval="+newval);
            myform.text1.value = parseInt(oldstring) + parseInt(newval);
     }
         
    //-->
    </SCRIPT>
      

  3.   

    当然是累加了,myform.text2.value得到的值是字符串,字符串相加当然会使累加成新的字符串了,所以你需要转换一下类型,楼上的可以,或者parseFloat代替parseInt,可能更好一些!
      

  4.   

    <form name=myform>
    <input type=text name="text1" id=text1 onchange="chg1()">
    <input type=text name="text2" id=text2 onpropertychange="chg()">
    <input type=text name="text3" id=text3 onpropertychange="chg()">
    </form>
    <script>
       var val1;
    function chg1()
    {  
          val1 = myform.text1.value ;  
    }
    function chg()
    {  
          var val2;
          var val3;
          var newval;
          val2 = myform.text2.value ;  
          val3 = myform.text3.value ; 
            newval = val1 + val2 + val3 ;
            myform.text1.value =newval;
    }
    </script>
      

  5.   

    <table>
     <tr><td>产品</td><td>一</td><td>二</td><td>总价<td/></tr>
     <tr>
      <td>产品一</td>
      <td><input type="text" id="price1"  onpropertychange="Sum2(price1,num1,money1)" value="0"></td>
      <td><input type="text" id="num1" onpropertychange="Sum2(price1,num1,money1)" value="0"></td>
      <td id="money1">0<td/>
     </tr>
     <tr>
      <td>产品二</td>
      <td><input type="text" id="price2" onpropertychange="Sum2(price2,num2,money2)" value="0"></td>
      <td><input type="text" id="num2" onpropertychange="Sum2(price2,num2,money2)" value="0"></td>
      <td id="money2">0<td/>
     </tr>
     <tr>
      <td colspan="3" align="center">合计</td>
      <td id="money"><td>
     </tr>
    </table>
    <script> 
    var produceCount = 2;  
    function Sum2(oPrice,oNum,oMoney)
    {
        oMoney.innerText = parseFloat(oPrice.value) + parseFloat(oNum.value);
        SumTotal();
    }
    function SumTotal()
    {
        var total = 0;
        for(var i=1;i<=produceCount;i++)
        {
            total+=parseFloat(eval("money"+i+".innerText"));
        }
        money.innerText = total;
    }
    </script>