Расчет произведения двух чисел и вывод на лету
Добрый день, господа, есть задача реализовать такую штуку.
Есть таблица с наименованием работ, в которой находятся n строк. Вторая колонка - цена за работу. Третья колонка <input>, куда пользователь вводит необходимое количество. Так вот, необходимо чтобы в четвертой колонке на лету выводилось произведение второй и третьей колонки, а под таблицей - суммарный результат. Подскажите, пожалуйста, как сие можно реализовать... ну например с использованием события onkeyup |
Вас интересует решение именно "вычисления на лету" или полностью вся работа с таблицей?
|
так вся работа с таблицей и сводится к вычислению на лету, чтобы потенциальный пользователь мог сразу видеть результат
|
<html>
<body>
<table id='main'>
<tr>
<td>
Наименование
</td>
<td>
Цена
</td>
<td>
<input>
</td>
</tr>
<tr>
<td>
что-то
</td>
<td>
300
</td>
<td>
<input type='text' />
</td>
</tr>
<tr>
<td>
что-то
</td>
<td>
300
</td>
<td>
<input type='text' />
</td>
</tr>
<tr>
<td>
что-то
</td>
<td>
300
</td>
<td>
<input type='text' />
</td>
</tr>
</table>
<span id='summ'>0</span>
<script type='text/javascript'>
var elems = document.getElementById("main").getElementsByTagName("input"),
sm = document.getElementById("summ");
for (var i = 0, l = elems.length; i < l; i++)
elems[i].onblur = function () {
var val = this.value, price = this.parentNode.parentNode.cells[1].innerHTML,
res = +val.replace(/\s/g, "") * +price.replace(/\s/g, "");
if (res === res) { // проверка от Nan
this.value = res;
var s = 0;
for (var j = 0; j < elems.length; j++)
s += +elems[j].value;
sm.innerHTML = s;
}
};
</script>
</body>
</html>
|
А что делать, если результат придется выводить не в форме, а в другой, четвертой колонке?
|
Matre,
На всякий случай this.value = (res === res)?res:0 |
Ronicon, переместить SPAN, куда складывается результат, в четвёртую колонку, предварительно добавив её.
|
Цитата:
|
В ТЗ было указано, что суммарный результат будет выводиться под таблицей.
И не надо со мной так разговаривать, как будто я что-то был обязан сделать и сделал это плохо, мразь. |
Спасибо, Вы все сделали хорошо, и я Вам очень благодарен
|
| Часовой пояс GMT +3, время: 04:53. |