Мне нужен javascript, чтобы добавить 5 к целочисленной переменной, но вместо этого он обрабатывает переменную как строку, поэтому записывает переменную, а затем добавляет 5 в конец «строки». Как я могу заставить его заниматься математикой?
var dots = document.getElementById("txt").value; // 5
function increase(){
dots = dots + 5;
}
Вывод: 55
Как заставить его выводить 10
?
#control
либо значение для вашей проблемы? Если нет, то удалите их и не показывайте нам. Продолжайте сокращать код до тех пор, пока у вас не будет абсолютного минимума тестового примера, необходимого для воспроизведения вашей проблемы. В большинстве случаев это заставит вас найти проблему и учиться в процессе. Если вы не решите ее самостоятельно, то, скорее всего, быстро получите помощь на своем простом примере.Ответы:
У тебя есть линия
в вашем файле это сделает точки строкой, потому что содержимое txt не ограничено числом.
чтобы преобразовать его в int, измените строку на:
Примечание.
10
Здесь указывается десятичная дробь (с основанием 10). Без этого некоторые браузеры могут неправильно интерпретировать строку. См MDN:parseInt
.источник
простейший:
точки будут преобразованы в числа.
источник
dots = +dots+5
.НЕ ЗАБУДЬТЕ - используйте,
parseFloat();
если имеете дело с десятичными знаками.источник
Number
.Я добавляю этот ответ, потому что не вижу его здесь.
Один из способов - поставить знак "+" перед значением.
пример:
х === 15
Я нашел, что это самый простой способ
В этом случае строка:
можно изменить на
заставить его число
НОТА:
источник
parseInt()
должен сделать трюкДает тебе
http://www.w3schools.com/jsref/jsref_parseint.asp
Примечание:
10
вparseInt(number, 10)
специфицируешь десятичное (основание-10). Без этого некоторые браузеры могут неправильно интерпретировать строку. См MDN:parseInt
.источник
Это также работает для вас:
источник
это действительно просто
это заставляет javascript умножаться, потому что нет путаницы для * входа в javascript.
источник
Вы можете добавить + после переменной, и это заставит ее быть целым числом
источник
Попробовав большинство ответов здесь безуспешно для моего конкретного случая, я пришел к следующему:
Знаки + - вот что сбивает с толку js, и это полностью их устраняет. Простой в реализации, но может сбивать с толку.
источник
ОБНОВЛЕНО с момента последнего голосования против ....
Я видел только часть
раньше, но позже мне было показано, что
txt
поле передает переменнуюdots
. Из-за этого вам нужно обязательно «очистить» ввод, чтобы убедиться, что он содержит только целые числа, а не вредоносный код.Один из простых способов сделать это - проанализировать текстовое поле с
onkeyup()
событием, чтобы убедиться, что оно содержит числовые символы:где событие выдаст ошибку и очистит последний символ, если значение не является числом:
Очевидно, это можно сделать и с регулярным выражением, но я выбрал ленивый выход.
С тех пор вы знаете, что в поле могут быть только числа, вы можете просто использовать
eval()
:источник
eval()
опасен, если онdots
поступает от пользователя, особенно если он от сохраненного ввода. Дополнительная информацияdots
была определенной переменной, которая увеличивалась и была ошибочно принята за строку. Поэтому я уточню свой ответ, что его не следует использовать легкомысленно, как вы сказали, из пользовательского / сохраненного ввода, который может иметь потенциал для вредоносной инъекции сценариев. Но также и в этом случае такая инъекция в любом случае вызовет математическую ошибку / исключение, так что в любом случае она ничего не сделает.eval()
это опасным, вам нужно посмотреть на код в контексте, который использовал OP. В данном случае это не так, потому что он использует ввод, который не поступает из текстового поля или какой-либо другой формы пользовательского ввода, где может быть любая форма введения нечислового значения! Хотел бы я проголосовать против ваших голосов!eval()
все в порядке, и вам нужно смотреть на контекст, в котором он используется, вместо того, чтобы слепо верить всему, что вы читаете, не понимая его на самом деле!var dots = 5 function increase(){ dots = dots+5; }
не использует текстовое поле и назначает с использованием прямых переменных, а не ввода пользователем. Вот из чего я пошел. Но я видел , что ты прав , что он назначая это текстовое полеtxt
дляdots
иdots
является глобальной переменной, и поэтому обновляется с помощью этого входа. Ты прав. Спасибо.