2012-08-12 154 views
0

HTML代码HTML阵列相乘的javascript

<input name="itemCode[]" value="" class="tInput" id="itemCode" tabindex="1"/> </td> 
<input name="itemDesc[]" value="" class="tInput" id="itemDesc" readonly="readonly" /></td> 
<input name="itemQty[]" value="" class="tInput" id="itemQty" tabindex="2" onchange="multiply(this)"/></td> 
<input name="itemPrice[]" value="" class="tInput" id="itemPrice" readonly="readonly" /> </td> 

Javascript代码

function multiply(el) { 
    var i= el.value * document.getElementById('itemPrice').value; 
    document.getElementById('itemPrice').value =i; 
} 

问题是这样的: 在表中第一行正确相乘但第二行不工作....请帮助

+1

你怎么知道第一行是正确的,而第二行是不正确的? – irrelephant 2012-08-12 12:10:16

+2

ID必须是**唯一**!搜索它,这已被解释了很多次。 – 2012-08-12 12:11:19

+1

您不显示id为“item”的元素,因此该函数的第一行将不起作用。 Felix说,这似乎是在一个表行中,所以如果你重复多次使用相同的ID重复它,它将无法正常工作 - '.getElementById()'将只返回第一个(或者,对于某些浏览器,可能是最后一个)。 – nnnnnn 2012-08-12 12:13:30

回答

1

问题是,您无法单独使用itemXxxxx正确识别该行。 最好使用一些id来标识您所指的“行”。

例如像(用于行,在这种情况下,行/货号23):

<input id="price23" .....> 
<input id="qty23" ......> 
<input id="total23" onchange="calc(23);" ...> 

功能calc(id)是:

function calc(id) 
{ 

    var p = document.getElementById("price"+id).value; 
    var q = document.getElementById("qty"+id).value; 
    document.getElementById("total"+id).value = p * q; 
} 

这是很容易注入排来自某些服务器端代码的数字。

编辑:另一个选择是使用JQuery和父母和兄弟之间的一些DOM遍历来获得所需的值。

+0

但我不知道有多少行会在那里它是这样的一些事情 http://www.codemashups.com/source/jquery/jquery-autocomplete-p1/ – user1593373 2012-08-12 12:20:38