Числа скаладываются как строки
Всем привет!!!
Создал в документе 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". Помогите разобраться пожалуйста :) |
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; } |
Спасибо, заработало :)
|
А как сделать такое только не через
<div onClick="summ(400);"> а чтобы это были checkbox? |
Могу немного подсказать с логикой. Здесь при клике на 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); } } }); |
Часовой пояс GMT +3, время: 13:05. |