Расчет произведения двух чисел и вывод на лету
Добрый день, господа, есть задача реализовать такую штуку.
Есть таблица с наименованием работ, в которой находятся 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, время: 13:15. |