2015-11-11 2 views
5

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

Я знаю, что в 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; 
} 
+0

вам нужно 'ParseInt (значение)' преобразовать в целое число, а не текстовое значение, когда захватывая числовые значения от йот. – David

+0

Спасибо всем! – SenjuXo

ответ

5

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

Пример:

input += parseInt(document.getElementById("small").value); 
+0

ahhhh! это делает гораздо больше смысла. Я смотрел на возвращаемый тип .value и пытался понять, как его разобрать. Существуют ли все виды анализа? parseDouble/Int/Float и т. д.? – SenjuXo

+0

@SenjuXo просто 'parseInt' и' parseFloat'; JavaScript не имеет (native) 'parseDouble'. См. Этот ответ: http://stackoverflow.com/a/21278297/2057919 –

+0

Alrighty! Спасибо! – SenjuXo

1

Вы должны преобразовать .value в число как целое число или число с плавающей точкой с parseInt или parseFloat. .value - это строка.

2

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

input += parseInt(document.getElementById("large").value); 
2

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

input += +document.getElementById("large").value; 
1

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

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

1

Вы также можете обратиться к этому link-

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

JavaScript - это динамически типизированный язык, а не статичный, например, java.

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

Смежные вопросы