14.04.2011, 13:16
|
Интересующийся
|
|
Регистрация: 08.11.2010
Сообщений: 10
|
|
Расчет произведения двух чисел и вывод на лету
Добрый день, господа, есть задача реализовать такую штуку.
Есть таблица с наименованием работ, в которой находятся n строк. Вторая колонка - цена за работу. Третья колонка <input>, куда пользователь вводит необходимое количество. Так вот, необходимо чтобы в четвертой колонке на лету выводилось произведение второй и третьей колонки, а под таблицей - суммарный результат.
Подскажите, пожалуйста, как сие можно реализовать... ну например с использованием события onkeyup
Последний раз редактировалось Ronicon, 14.04.2011 в 17:26.
|
|
14.04.2011, 13:33
|
Новичок на форуме
|
|
Регистрация: 06.04.2011
Сообщений: 2
|
|
Вас интересует решение именно "вычисления на лету" или полностью вся работа с таблицей?
|
|
14.04.2011, 13:41
|
Интересующийся
|
|
Регистрация: 08.11.2010
Сообщений: 10
|
|
так вся работа с таблицей и сводится к вычислению на лету, чтобы потенциальный пользователь мог сразу видеть результат
|
|
14.04.2011, 13:53
|
Профессор
|
|
Регистрация: 07.01.2011
Сообщений: 582
|
|
<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, 14.04.2011 в 14:25.
|
|
14.04.2011, 14:36
|
Интересующийся
|
|
Регистрация: 08.11.2010
Сообщений: 10
|
|
А что делать, если результат придется выводить не в форме, а в другой, четвертой колонке?
|
|
14.04.2011, 14:42
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Matre,
На всякий случай
this.value = (res === res)?res:0
|
|
14.04.2011, 15:02
|
Профессор
|
|
Регистрация: 07.01.2011
Сообщений: 582
|
|
Ronicon, переместить SPAN, куда складывается результат, в четвёртую колонку, предварительно добавив её.
|
|
14.04.2011, 15:16
|
Интересующийся
|
|
Регистрация: 08.11.2010
Сообщений: 10
|
|
Сообщение от Matre
|
Ronicon, переместить SPAN, куда складывается результат, в четвёртую колонку, предварительно добавив её.
|
Я имею в виду, не общий результат сложения, а произведение чисел во 2 и 3 колонке
|
|
14.04.2011, 15:31
|
Профессор
|
|
Регистрация: 07.01.2011
Сообщений: 582
|
|
В ТЗ было указано, что суммарный результат будет выводиться под таблицей.
И не надо со мной так разговаривать, как будто я что-то был обязан сделать и сделал это плохо, мразь.
|
|
14.04.2011, 15:41
|
Интересующийся
|
|
Регистрация: 08.11.2010
Сообщений: 10
|
|
Спасибо, Вы все сделали хорошо, и я Вам очень благодарен
|
|
|
|