Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.04.2011, 23:24
Новичок на форуме
Отправить личное сообщение для rasta Посмотреть профиль Найти все сообщения от rasta
 
Регистрация: 04.04.2011
Сообщений: 8

Числа скаладываются как строки
Всем привет!!!
Создал в документе HTML вот такой код:
<div onClick="summ(220);">Товар1</div>
<div onClick="summ(400);">Товар2</div>
<form name="forma1">
Сумма <input type="text" name="res" size="10">
</form>

а в файле script.js следующий код:
function summ(b) {
var s=document.forma1.res.value;
s=s+b;
document.forma1.res.value=s;
}

Хочу сделать так, чтобы при щелчке на надпись "Товар1" в поле выводилось 220, если ещё раз кликну, то 440, а если ещё и по "Товар2" щёлкну то прибавлялось ещё 400, ну и так далее, вообщем как счетчик заказов. Но почему то выводится "Сумма: 220220400" . Как я понял так происходит потому что не выполнено преобразование из строк в числа. Я пробовал заменить s=s+b; на s=parseInt(s)+b; тогда выводит "Сумма: NaN".
Помогите разобраться пожалуйста
Ответить с цитированием
  #2 (permalink)  
Старый 04.04.2011, 23:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

rasta,
При первом клике document.forma1.res.value = пусто !!! parseInt( из нефига ) = NaN
Вариант с parseInt
function summ(b) {
var s=document.forma1.res.value||0;
s=parseInt(s)+b;
document.forma1.res.value=s;
}

Вариант проще через плюс
function summ(b) {
var s=+document.forma1.res.value;
s=s+b;
document.forma1.res.value=s;
}
Ответить с цитированием
  #3 (permalink)  
Старый 05.04.2011, 08:46
Новичок на форуме
Отправить личное сообщение для rasta Посмотреть профиль Найти все сообщения от rasta
 
Регистрация: 04.04.2011
Сообщений: 8

Спасибо, заработало
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2011, 15:55
Аспирант
Отправить личное сообщение для McLotos Посмотреть профиль Найти все сообщения от McLotos
 
Регистрация: 18.11.2010
Сообщений: 56

А как сделать такое только не через
<div onClick="summ(400);">

а чтобы это были checkbox?
Ответить с цитированием
  #5 (permalink)  
Старый 07.04.2011, 16:59
Аспирант
Отправить личное сообщение для Johny Посмотреть профиль Найти все сообщения от Johny
 
Регистрация: 20.08.2010
Сообщений: 54

Могу немного подсказать с логикой. Здесь при клике на li добавляется в инпут его id, при повторном убирается. Остается только чуть его изменить. Надеюсь поможет.
$('.list ul li').click(function(){
		if ($(this).hasClass("selected"))
		{
			var id = $(this).attr("id");
			if ($('input#list_arr').val().length > 0)
			{
				var els = $('input#list_arr').val().split(",");
				$('input#list_arr').val("");
				for (i = 0; i < els.length; i++)
				{
					if (id != els[i])
					{
						if ($('input#list_arr').val().length > 0)
							$('input#list_arr').val($('input#list_arr').val() + "," + els[i]);
						else
							$('input#list_arr').val(els[i]);
					}
				}
			}
		}
		else
		{
			var id = $(this).attr("id");
			if ($(this).attr("id") > 0)
			{
				if ($('input#list_arr').val().length > 0)
					$('input#list_arr').val($('input#list_arr').val() + "," + id);
				else
					$('input#list_arr').val(id);
			}
		}
	});

Последний раз редактировалось Johny, 08.04.2011 в 15:45.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрипт бегущей строки - как сделать строку непрерывной dansury Элементы интерфейса 9 26.01.2013 04:54
Как узнать, присутствует ли в окне полоса прокрутки или нет? возжаждавший Элементы интерфейса 6 12.03.2010 23:00
Как организовать RichEdit arma Элементы интерфейса 2 18.02.2010 14:57
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56
как "выхватить" часть числа POLOS Общие вопросы Javascript 1 17.03.2009 12:55