Числа скаладываются как строки
Всем привет!!!
Создал в документе 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, время: 18:32. |