2012-08-12 153 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