Объединение подобных функций
Здравствуйте все!!!
И сразу к делу: Имеется таблица, каждая строка в которой реализованная следующим образом:
<tr>
<td class="kolonka_1"><a href="#" onclick="delete_tr(this)"><img src="img/del.gif" alt="Удалить строку"></a></td>
<td class="kolonka_2">Торт</td>
<td class="kolonka_3"> <input name="k_3_1" type="num" value="0" onchange="rez(); return true;"> </td>
<td class="kolonka_4"> <input name="k_4_1" type="num" value="0" onchange="rez(); return true;"> </td>
<td class="kolonka_5">
<select>
<option></option>
<option> шт. </option>
<option> кг. </option>
<option> чел. </option>
<option> час. </option>
</select>
</td>
<td class="kolonka_6"> <input type="num" name="k_6_1" value="0"> </td>
<td class="kolonka_7"> <input type="num" name="k_7_1" value="0"> </td>
<td class="kolonka_8"> <input type="num" name="k_8_1" value="0"> </td>
</tr>
Функция rez() представляет собой следующее:
function rez() {
var val1 = parseInt(document.kalk.k_3_1.value);
var val2 = parseInt(document.kalk.k_4_1.value);
var val3 = val1 * val2;
document.kalk.k_6_1.value = val3;
}
И все вроде бы хорошо и все вроде считает, НО... Вот это большое "но" заключается в том что строк в таблице 118 и, в принципе, можно написать 118 функций с разными именами, но это реально извращение. Подскажите, как организовать функцию чтоб все это упростить??? |
<tr>
<td class="kolonka_1"><a href="#" onclick="delete_tr(this)"><img src="img/del.gif" alt="Удалить строку"></a></td>
<td class="kolonka_2">Торт</td>
<td class="kolonka_3"> <input name="k_3_1" type="num" value="0" onchange="rez(1); return true;"> </td>
<td class="kolonka_4"> <input name="k_4_1" type="num" value="0" onchange="rez(1); return true;"> </td>
<td class="kolonka_5">
<select>
<option></option>
<option> шт. </option>
<option> кг. </option>
<option> чел. </option>
<option> час. </option>
</select>
</td>
<td class="kolonka_6"> <input type="num" name="k_6_1" value="0"> </td>
<td class="kolonka_7"> <input type="num" name="k_7_1" value="0"> </td>
<td class="kolonka_8"> <input type="num" name="k_8_1" value="0"> </td>
</tr>
function rez(i) {
var val1 = parseInt(document.getElementsByName('kalk')[0].getElementsByName('k_3_'+i)[0].value);
var val2 = parseInt(document.getElementsByName('kalk')[0].getElementsByName('k_4_'+i)[0].value);
var val3 = val1 * val2;
document.getElementsByName('kalk')[0].getElementsByName('k_6_'+i)[0].value = val3;
}
решение весьма топорное по-хорошему делу, надо бы передавать через this указатель на текущий объект, но можно и так |
Попробовал...
выдает ошибку "объект не поддерживает это свойство или метод" что делать???:cray: |
function rez(i) {
var val1 = parseInt(document.kalk['k_3_'+i].value);
var val2 = parseInt(document.kalk['k_4_'+i].value);
var val3 = val1 * val2;
document.kalk['k_6_'+i].value = val3;
}
|
Спасибо, теперь все работает как нужно :thanks:
|
| Часовой пояс GMT +3, время: 10:42. |