Javascript += эквивалент?

Мой код представляет собой простую функцию, которая проверяет, какой переключатель был нажат, и добавляет значение этого переключателя к моему var input = 0;. Тем не менее, я знаю, что делаю что-то не так, поскольку это работает, но вывод неправильный. Когда одно из утверждений if истинно, вместо того, чтобы input(0) теперь был равен самому себе плюс новое значение getElementById("small").value, он выводит 010, а не now 10.

Я знаю, что в Java существовало соглашение, похожее на input += getElementById("small").value;, но, похоже, оно не работает. Итак, как вы можете видеть в моем примере ниже, я попробовал альтернативу input = input + /*code*/;, но все равно не повезло.

Я новичок в JavaScript, но хорошо знаком с Java. Я предполагаю, что я просто использую здесь неправильный синтаксис, но все мои поиски в Google не работают.

function calculate()
{
    var input = 0;
    if (document.getElementById("small").checked) 
    {
        input = input + document.getElementById("small").value;
    }
    else if (document.getElementById("medium").checked)
    {
        input = input + document.getElementById("medium").value;
    }
    else if (document.getElementById("large").checked)
    {
        input = input + document.getElementById("large").value;
    }
    else
    {
        alert("failed");
    }

    document.getElementById("outar").innerHTML = input;
}

person SenjuXo    schedule 11.11.2015    source источник
comment
вам нужно parseInt(value) преобразовать в целое число, а не в текстовое значение при захвате числовых значений из dom.   -  person David    schedule 11.11.2015
comment
Всем большое спасибо!   -  person SenjuXo    schedule 11.11.2015


Ответы (6)


Вы пытаетесь выполнить арифметику со строкой. Вам нужно использовать parseInt() вокруг каждого из ваших document.getElementById("....").value выражений, потому что свойство .value является строкой.

Пример:

input += parseInt(document.getElementById("small").value);
person elixenide    schedule 11.11.2015
comment
аааа! это имеет гораздо больше смысла. Я смотрел на возвращаемый тип .value и пытался понять, как его анализировать. Существуют ли все типы Parse? parseDouble/Int/Float и т. д.? - person SenjuXo; 11.11.2015
comment
@SenjuXo просто parseInt и parseFloat; JavaScript не имеет (собственного) parseDouble. См. этот ответ: stackoverflow.com/a/21278297/2057919 - person elixenide; 11.11.2015

Ваше значение по умолчанию не является числом, это строка. Вы должны сначала разобрать его:

input += parseInt(document.getElementById("large").value);
person jvecsei    schedule 11.11.2015

Вы можете добавить дополнительный символ + перед строковым значением, чтобы преобразовать его в число:

input += +document.getElementById("large").value;
person Denys Krasnoshchok    schedule 11.11.2015

Вам нужно преобразовать .value в число как целое число или число с плавающей запятой с parseInt или parseFloat. .value — это строка.

person Daniel A. White    schedule 11.11.2015

Javascript — это язык с динамической типизацией, а не со статической типизацией, как в Java. document.getElementById("small").value возвращает строку, которую необходимо преобразовать в int с помощью parseInt().

Хо [е, что помогает :)

person gk0    schedule 11.11.2015

Вы также можете перейти по этой ссылке-

Возвращаемое значение из значения представляет собой строку. Вы должны преобразовать его в int, прежде чем выполнять какие-либо арифметические операции.

JavaScript — это язык с динамической типизацией, а не со статической типизацией, как в Java.

Возвращаемое значение: строка, представляющая значение текстового поля.

person RajSharma    schedule 11.11.2015