<script language="javascript">function res(obj){
obj.result.value=eval(obj.afield.value)+eval(obj.bfield.value)+eval(obj.cfield.value)+eval(obj.dfield.value)+eval(obj.efield.value)
}</script><form action="cgi.exe" method="get" name = "calForm"><input type="text" name="afield" value="0" size="8" onchange="res(calForm)">
<input type="text" name="bfield" value="0" size="8" onchange="res(calForm)">
<input type="text" name="cfield" value="0" size="8" onchange="res(calForm)">
<input type="text" name="dfield" value="0" size="8" onchange="res(calForm)">
<input type="text" name="efield" value="0" size="8" onchange="res(calForm)">
<input type="text" name="result" DISABLED size="8"></form>是这样吗?在前面的文本框里面输数字,在最后一个文本框显示相加结果。

解决方案 »

  1.   

    正确的方法应该是这样
    假设<form name="frm">var el = document.frm.elements["result[1]"];
    el.value = "***"用document.formName.elements[inputName]
      

  2.   

    但是我如果有result[2],result[3],result[4]...<input type="text" name="afield[1]" value="0" size="8" onchange="res(this.form)">
    <input type="text" name="afield[2]" value="0" size="8" onchange="res(this.form)">
    <input type="text" name="afield[3]" value="0" size="8" onchange="res(this.form)">
    ...
      

  3.   

    首先你的 name 命名就不太遵守规范, 你这个命名与数组下标会产生岐义.
    阿信的写法是正确的, 用document.formName.elements[inputName]; 这种方式调用到这个控件就不会有岐义错误了
      

  4.   

    修改了一下,可以支持多行的计算:<script language="javascript">function res(obj, index){
    var sRes;
    var sEle1;
    var sEle2;
    var sVal;

    sRes = "document.calForm.elements['cresult[" + index + "]'].value";
    sEle1 = "document.calForm.elements['afield[" + index + "]'].value";
    sEle2 = "document.calForm.elements['bfield[" + index + "]'].value";

    sVal = eval(sEle1 + "+" + sEle2);
    eval(sRes + "=" + sVal);
    }</script><form action="cgi.exe" method="get" name = "calForm"><input type="text" name="afield[1]" value="0" size="8" onchange="res(this.calForm, 1)">
    <input type="text" name="bfield[1]" value="0" size="8" onchange="res(this.calForm, 1)">
    <input type="text" name="cresult[1]" DISABLED size="8">
    <br>
    <input type="text" name="afield[2]" value="0" size="8" onchange="res(this.calForm, 2)">
    <input type="text" name="bfield[2]" value="0" size="8" onchange="res(this.calForm, 2)">
    <input type="text" name="cresult[2]" DISABLED size="8">
    </form>
      

  5.   

    又修改了一下,刚才的加是实现的字符串相加,现在改成了数字相加:
    <script language="javascript">
    function calAdd(a1, a2){
      return Number(a1) + Number(a2);
    }function res(obj, index){
    var sRes;
    var sEle1;
    var sEle2;
    var sVal;

    sRes = "document.calForm.elements['cresult[" + index + "]'].value";
    sEle1 = "document.calForm.elements['afield[" + index + "]'].value";
    sEle2 = "document.calForm.elements['bfield[" + index + "]'].value";

    eval(sRes + "=calAdd(" + sEle1 + ", " + sEle2 + ")");
    //eval(sRes + "=" + sVal);
    }
    </script><form action="cgi.exe" method="get" name = "calForm"><input type="text" name="afield[1]" value="0" size="8" onchange="res(this.calForm, 1)">
    <input type="text" name="bfield[1]" value="0" size="8" onchange="res(this.calForm, 1)">
    <input type="text" name="cresult[1]" DISABLED size="8">
    <br>
    <input type="text" name="afield[2]" value="0" size="8" onchange="res(this.calForm, 2)">
    <input type="text" name="bfield[2]" value="0" size="8" onchange="res(this.calForm, 2)">
    <input type="text" name="cresult[2]" DISABLED size="8">
    </form>