Не работает сложение

ram222

Da Vinci
Регистрация
27 Апр 2009
Сообщения
793
Реакции
86
есть код
Код:
        $("#raschet2").click(function(){
    a2=$("#a2").val();
    b2=$("#b2").val();
    r2=(a2/100)*b2;
    t2=r2+a2;
    $("#total12").val(r2);
    $("#total22").val(t2);
    });
Почему то не работает сложение t2=r2+a2; , выводит две переменные рядом, то есть например
r2=1, a2=2 то выведет 12 а не 3.
если сделать t2=r2+1; то норм, выводит 3.
причём r2=(a2/100)*b2; работает, то есть переменная a2 есть.
 
Потому что ты получаешь значение в строковом виде. Тебе нужно преобразовать в тип Number. Это делается операцией a2 = +a2; b2= +b2; А там где у тебя операция умножения интерпретатор сам меняет тип.
 
Потому что ты получаешь значение в строковом виде. Тебе нужно преобразовать в тип Number. Это делается операцией a2 = +a2; b2= +b2; А там где у тебя операция умножения интерпретатор сам меняет тип.
Можно как то сразу преобразовывать? Чтобы не добавлять код.
 
Это надо с каждым полем input так делать?
Переделывал несколько калькуляторов, но как то не сталкивался с такой проблемой, хотя там много переменных было и input(ов).
 
Это надо с каждым полем input так делать?
Переделывал несколько калькуляторов, но как то не сталкивался с такой проблемой, хотя там много переменных было и input(ов).
Если две переменных типа string, то происходит склеивание, если int, то сложение.
 
Это надо с каждым полем input так делать?
Переделывал несколько калькуляторов, но как то не сталкивался с такой проблемой, хотя там много переменных было и input(ов).
В форме предавай тип в виде number.
Код:
<input type="number" name="" value="" placeholder="">
 
В форме предавай тип в виде number.
Код:
<input type="number" name="" value="" placeholder="">
Вот это то что нужно, и никаких добавлений в скрипт.
Со всеми браузерами будет работать?
 
Вот это то что нужно, и никаких добавлений в скрипт.
Со всеми браузерами будет работать?
Если получаете значение через .val(), то это вам не поможет. Эксперимента ради:
Код:
<span>Click</span><br><br>
<input id="inp1" type="number" name="" value="888" placeholder="">
<script>
$('span').click(function(){
  var a = $('#inp1').val();
  alert(typeof(a) + ' ' +a);  // вернет string
    });
</script>
Если требуется получать значение типа number прямо из элемента - можно например так:
Код:
  <span>Click</span>
<input id="inp1" name="" data-number="8989" onkeyup="$(this).data('number', +this.value);" value="8989" placeholder="">
  <script>
    $('span').click(function(){
  var a = $('#inp1').data('number');
  alert(typeof(a) + ' ' +a); // вернет number
});
  </script>
Хотя лучше всё же приводить тип в скрипте и не пользоваться таким вариантом.
 
Последнее редактирование:
Назад
Сверху