Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.04.2011, 13:16
Интересующийся
Отправить личное сообщение для Ronicon Посмотреть профиль Найти все сообщения от Ronicon
 
Регистрация: 08.11.2010
Сообщений: 10

Расчет произведения двух чисел и вывод на лету
Добрый день, господа, есть задача реализовать такую штуку.
Есть таблица с наименованием работ, в которой находятся n строк. Вторая колонка - цена за работу. Третья колонка <input>, куда пользователь вводит необходимое количество. Так вот, необходимо чтобы в четвертой колонке на лету выводилось произведение второй и третьей колонки, а под таблицей - суммарный результат.
Подскажите, пожалуйста, как сие можно реализовать... ну например с использованием события onkeyup

Последний раз редактировалось Ronicon, 14.04.2011 в 17:26.
Ответить с цитированием
  #2 (permalink)  
Старый 14.04.2011, 13:33
Новичок на форуме
Отправить личное сообщение для hisbvdis Посмотреть профиль Найти все сообщения от hisbvdis
 
Регистрация: 06.04.2011
Сообщений: 2

Вас интересует решение именно "вычисления на лету" или полностью вся работа с таблицей?
Ответить с цитированием
  #3 (permalink)  
Старый 14.04.2011, 13:41
Интересующийся
Отправить личное сообщение для Ronicon Посмотреть профиль Найти все сообщения от Ronicon
 
Регистрация: 08.11.2010
Сообщений: 10

так вся работа с таблицей и сводится к вычислению на лету, чтобы потенциальный пользователь мог сразу видеть результат
Ответить с цитированием
  #4 (permalink)  
Старый 14.04.2011, 13:53
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

<html>
	<body>
		<table id='main'>
			<tr>
				<td>
					Наименование
				</td>
				<td>
					Цена
				</td>
				<td>
					&lt;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.
Ответить с цитированием
  #5 (permalink)  
Старый 14.04.2011, 14:36
Интересующийся
Отправить личное сообщение для Ronicon Посмотреть профиль Найти все сообщения от Ronicon
 
Регистрация: 08.11.2010
Сообщений: 10

А что делать, если результат придется выводить не в форме, а в другой, четвертой колонке?
Ответить с цитированием
  #6 (permalink)  
Старый 14.04.2011, 14:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Matre,
На всякий случай
this.value = (res === res)?res:0
Ответить с цитированием
  #7 (permalink)  
Старый 14.04.2011, 15:02
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Ronicon, переместить SPAN, куда складывается результат, в четвёртую колонку, предварительно добавив её.
Ответить с цитированием
  #8 (permalink)  
Старый 14.04.2011, 15:16
Интересующийся
Отправить личное сообщение для Ronicon Посмотреть профиль Найти все сообщения от Ronicon
 
Регистрация: 08.11.2010
Сообщений: 10

Сообщение от Matre Посмотреть сообщение
Ronicon, переместить SPAN, куда складывается результат, в четвёртую колонку, предварительно добавив её.
Я имею в виду, не общий результат сложения, а произведение чисел во 2 и 3 колонке
Ответить с цитированием
  #9 (permalink)  
Старый 14.04.2011, 15:31
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

В ТЗ было указано, что суммарный результат будет выводиться под таблицей.

И не надо со мной так разговаривать, как будто я что-то был обязан сделать и сделал это плохо, мразь.
Ответить с цитированием
  #10 (permalink)  
Старый 14.04.2011, 15:41
Интересующийся
Отправить личное сообщение для Ronicon Посмотреть профиль Найти все сообщения от Ronicon
 
Регистрация: 08.11.2010
Сообщений: 10

Спасибо, Вы все сделали хорошо, и я Вам очень благодарен
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск