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>
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>
<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>这样可以吗?
我感觉你是把A和自己关连起来了。
我想要的是B和A关连,当A的onchange事件发生时,希望更改B的值。我的表述不知道是否清楚,再次求助大家了。
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>
应该是:
<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>
我刚才试了,分别命名A1,B1,A2,B2
然后从this里面提取出索引值,在拼成B的id,
很好用,哈哈。多谢多谢,等我测试一下看看还有没有其他问题,然后结帖给分,谢谢啦。
<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>
<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>
我以前搞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>