1,页面上显示数据行,分别用A,B两个数组来显示。
2,B的值是根据A的值计算出来的。问题:
A的值修改之后,我如何自动的更新B的值?
想用onchange函数,但是我并不知道数组的下标,无法定位要更新哪一个B。<form name="xf">
1,<input type="text" name="A" value="1"/><input type="text" name="B" value="1"/><br>
2,<input type="text" name="A" value="1"/><input type="text" name="B" value="1"/><br>
3,<input type="text" name="A" value="1"/><input type="text" name="B" value="1"/>
...
</form>

解决方案 »

  1.   

    也完全可以在打出来之前都加上ID="A1"和ID="B1"..
      

  2.   


    <script>
    function EditBInPut(o){
      var id=o.id;
      var obj=document.getElementById(id);
      //这里开始计算
      obj.value=你的计算结果
    }
    <script>
    <form name="xf"> 
    1, <input type="text" id=1 name="A" value="1" onchange="javascript:EditBInPut(this)"/> <input type="text" id=1 name="B" value="1"/> <br> 
    2, <input type="text" id=2 name="A" value="1" onchange="javascript:EditBInPut(this)"/> <input type="text" id=2 name="B" value="1"/> <br> 
    3, <input type="text" id=3 name="A" value="1" onchange="javascript:EditBInPut(this)"/> <input type="text" id=3 name="B" value="1"/> 
    ... 
    </form>这样可以吗?
      

  3.   


    我感觉你是把A和自己关连起来了。
    我想要的是B和A关连,当A的onchange事件发生时,希望更改B的值。我的表述不知道是否清楚,再次求助大家了。
      

  4.   

    刚才想了一下,用三楼的方法,可以得到某一行的this值,
    this里面是否可以提取出行号呢?
    然后根据A的行号,我再拼出B的ID名来,应该就能解决了。不知道行不行?请大家多帮忙。<form name="xf"> 
    1, <input type="text" id=1 name="A1" value="1" onchange="javascript:EditBInPut(this)"/> <input type="text" id=1 name="B1" value="1"/> <br> 
    2, <input type="text" id=2 name="A2" value="1" onchange="javascript:EditBInPut(this)"/> <input type="text" id=2 name="B2" value="1"/> <br> 
    3, <input type="text" id=3 name="A3" value="1" onchange="javascript:EditBInPut(this)"/> <input type="text" id=3 name="B3" value="1"/> 
    ... 
    </form>
      

  5.   

    sorry了,没写清楚
    应该是:
    <script>
    function EditBInPut(o){
      var id=o.id;
      var obj=document.getElementById("B"+id);
      //这里开始计算
      obj.value=你的计算结果
    }
    <script>
    <form name="xf"> 
    1, <input type="text" id=1 name="A" value="1" onchange="javascript:EditBInPut(this)"/> <input type="text" id=B1 name="B" value="1"/> <br> 
    2, <input type="text" id=2 name="A" value="1" onchange="javascript:EditBInPut(this)"/> <input type="text" id=B2 name="B" value="1"/> <br> 
    3, <input type="text" id=3 name="A" value="1" onchange="javascript:EditBInPut(this)"/> <input type="text" id=B3 name="B" value="1"/> 
    ... 
    </form>
      

  6.   

    谢谢toury 
    我刚才试了,分别命名A1,B1,A2,B2
    然后从this里面提取出索引值,在拼成B的id,
    很好用,哈哈。多谢多谢,等我测试一下看看还有没有其他问题,然后结帖给分,谢谢啦。
      

  7.   


    <script> 
    function cal(obj){
    var a = document.getElementsByName("A");
    for(var i=0;i<a.length;i++){
    if(a[i]==obj) break;
    }
    var v = a[i].value;
    a = document.getElementsByName("B");
    a[i].value = parseInt(a[i].value) + parseInt(v);
    }
    </script> <form name="xf"> 
    1, <input type="text" name="A" value="1" onchange="cal(this);"/> <input type="text" name="B" value="1"/> <br> 
    2, <input type="text" name="A" value="1" onchange="cal(this);"/> <input type="text" name="B" value="1"/> <br> 
    3, <input type="text" name="A" value="1" onchange="cal(this);"/> <input type="text" name="B" value="1"/> 
    </form>
      

  8.   

    简化并修正一下上面的错误:
    <script>
    function EditBInPut(id){
      var obj=document.getElementById("B"+id);
      //这里开始计算
      obj.value=你的计算结果
    }
    <script>
    <form name="xf"> 
    1, <input type="text" id=1 name="A" value="1" onchange="javascript:EditBInPut(this.id)"/> <input type="text" id=B1 name="B" value="1"/> <br> 
    2, <input type="text" id=2 name="A" value="2" onchange="javascript:EditBInPut(this.id)"/> <input type="text" id=B2 name="B" value="1"/> <br> 
    3, <input type="text" id=3 name="A" value="3" onchange="javascript:EditBInPut(this.id)"/> <input type="text" id=B3 name="B" value="1"/> 
    ... 
    </form>
      

  9.   

    谢谢 hookee 的回复。
    我以前搞Symbian开发,在诺基亚论坛也有一位hookee大虾,不知道是不是你。通过学习你的方案,我又了解到了新的东西,
    原来可以通过比较数组的元素来判断下标!! (受益匪浅)没有运行你的程序,不过感觉那个i属于局部变量,只存在于for循环中,
    后面的a[i].value = parseInt(a[i].value) + parseInt(v);,应该报错。[Quote=引用 10 楼 hookee 的回复:]
    HTML code
    <script> 
    function cal(obj){
        var a = document.getElementsByName("A");    
        for(var i=0;i<a.length;i++){
            if(a[i]==obj) break;    
        }
        var v = a[i].value;
        a = document.getElementsByName("B");    
        a[i].value = parseInt(a[i].value) + parseInt(v);
    }
    </script> 
      

  10.   

    非常感谢热心的 toury程序能运行了。哈哈,非常开心,刚接触jsp开发,略有小小成就感。