Как заставить JS выполнять математику вместо того, чтобы сгруппировать две строки
Мне нужен javascript для добавления 5 к целочисленной переменной, но вместо этого он обрабатывает переменную как строку, поэтому записывает переменную, а затем добавляет 5 в конец "строки". Как я могу заставить его делать математику вместо этого?
var dots = document.getElementById("txt").value; // 5
function increase(){
dots = dots + 5;
}
Выход: 55
Как я могу заставить его вывести 10
?
Ответы
Ответ 1
У вас есть линия
dots = document.getElementById("txt").value;
в вашем файле это установит точки как строку, потому что содержимое txt не ограничено числом.
чтобы преобразовать его в int, измените строку на:
dots = parseInt(document.getElementById("txt").value, 10);
Примечание: 10
здесь указывает десятичную (основание-10). Без этого некоторые браузеры могут неправильно интерпретировать строку. Смотрите MDN: parseInt
.
Ответ 2
самый простой:
dots = dots*1+5;
точки будут преобразованы в число.
Ответ 3
НЕ ЗАБУДЬТЕ - используйте parseFloat();
, если вы имеете дело с десятичными знаками.
Ответ 4
parseInt()
должен сделать свое дело
var number = "25";
var sum = parseInt(number, 10) + 10;
var pin = number + 10;
Дает тебе
sum == 35
pin == "2510"
http://www.w3schools.com/jsref/jsref_parseint.asp
Примечание: 10
в parseInt(number, 10)
указывает десятичное число (основание-10). Без этого некоторые браузеры могут неправильно интерпретировать строку. Смотрите MDN: parseInt
.
Ответ 5
Я добавляю этот ответ, потому что не вижу его здесь.
Один из способов - поставить символ "+" перед значением
Пример:
var x = +'11.5' + +'3.5'
x === 15
Я нашел, что это самый простой способ
В этом случае строка:
dots = document.getElementById("txt").value;
можно изменить на
dots = +(document.getElementById("txt").value);
чтобы заставить его число
ПРИМЕЧАНИЕ:
+'' === 0
+[] === 0
+[5] === 5
+['5'] === 5
Ответ 6
Это также работает для вас:
dots -= -5;
Ответ 7
Вы можете добавить + за переменной, и она станет целым числом
var dots = 5
function increase(){
dots = +dots + 5;
}
Ответ 8
это действительно просто
var total = (1 * yourFirstVariablehere) + (1 * yourSecondVariablehere)
это заставляет javascript умножаться, потому что нет никакой путаницы для знака * в javascript.
Ответ 9
ОБНОВЛЕНО, так как это было последним downvoted....
Я видел только часть
var dots = 5
function increase(){
dots = dots+5;
}
раньше, но позже мне показалось, что поле txt
подает переменную dots
. Из-за этого вам нужно обязательно "очистить" вход, чтобы быть уверенным, что он имеет только целые числа, а не вредоносный код.
Один простой способ сделать это - разобрать текстовое поле с событием onkeyup()
, чтобы убедиться, что оно имеет числовые символы:
<input size="40" id="txt" value="Write a character here!" onkeyup="GetChar (event);"/>
где событие даст ошибку и очистит последний символ, если значение не является числом:
<script type="text/javascript">
function GetChar (event){
var keyCode = ('which' in event) ? event.which : event.keyCode;
var yourChar = String.fromCharCode();
if (yourChar != "0" &&
yourChar != "1" &&
yourChar != "2" &&
yourChar != "3" &&
yourChar != "4" &&
yourChar != "5" &&
yourChar != "6" &&
yourChar != "7" &&
yourChar != "8" &&
yourChar != "9")
{
alert ('The character was not a number');
var source = event.target || event.srcElement;
source.value = source.value.substring(0,source.value-2);
}
}
</script>
Очевидно, вы могли бы сделать это с помощью регулярного выражения, но я взял ленивый выход.
С тех пор вы бы знали, что в поле могут быть только цифры, вы должны просто использовать eval()
:
dots = eval(dots) + 5;