Добавление в javaScript - PullRequest
       2

Добавление в javaScript

1 голос
/ 29 сентября 2011

Я пытаюсь создать приложение с обратным курсом и заставить его работать с вычитанием, но когда я набираю 30, например, вместо того, чтобы откачать 210 градусов, он выкачивает 30180. Мой код приведен ниже, и я хотел бы немного предложения о том, как это исправить.

if(convertFromValue > 360){
paraGraph.innerHTML = 'Please enter a number between 1 and 360';
}
else
{
if(convertFromValue > 180) {
paraGraph.innerHTML = convertFromValue - 180 ;

}
else
{
paraGraph.innerHTML = convertFromValue + 180 ;
}
}
}

Ответы [ 5 ]

8 голосов
/ 29 сентября 2011

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

    paraGraph.innerHTML = parseInt(convertFromValue, 10) + 180;

Это может или не может быть правильным для вашего приложения.Существуют и другие распространенные сочетания клавиш для преобразования строк в числа.Конечно, вы, вероятно, также хотите проверить наличие ошибок, потому что, если строка поступает из поля ввода, она может вообще не быть (или похожа) на число.

4 голосов
/ 29 сентября 2011

Попробуйте

convertFromValue = parseInt(convertFromValue, 10);

, прежде чем начинать проверять условия и добавлять.

2 голосов
/ 29 сентября 2011

Вы добавляете целые числа к строковым значениям, что эквивалентно объединению строк вместе. Используйте parseInt()

convertFromValue = parseInt(convertFromValue, 10);
if(convertFromValue > 360) {
  paraGraph.innerHTML = 'Please enter a number between 1 and 360';
}
else
{
  if(convertFromValue > 180) {
    paraGraph.innerHTML = convertFromValue - 180 ;
  }
  else
  {
     paraGraph.innerHTML = convertFromValue + 180 ;
  }
}
0 голосов
/ 29 сентября 2011

Все ответы о необходимости использования parseInt верны.Это просто хитрый альтернативный подход, использующий оператор + для приведения String к Number:

paraGraph.innerHTML = +convertFromValue + 180
0 голосов
/ 29 сентября 2011
paraGraph.innerHTML = parseInt(convertFromValue) + 180 ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...