Как заставить JS делать математику вместо того, чтобы складывать две строки вместе
мне нужен javascript, чтобы добавить 5 к целочисленной переменной, но вместо этого он обрабатывает переменную как строку, поэтому он выписывает переменную, а затем добавляет 5 в конец "строки". Как я могу заставить его делать математику вместо этого?
var dots = 5
function increase(){
dots = dots + 5;
}
выходы: 55
как я могу заставить его выхода 10
?
это может быть ошибка в моем скрипте где-то?
Я инициализации dots
такой:
dots = document.getElementById("txt").value;
7 ответов
у вас есть строка
dots = document.getElementById("txt").value;
в вашем файле это установит точки как строку, потому что содержимое txt не ограничено числом.
преобразовать его в int измените строку:
dots = parseInt(document.getElementById("txt").value);
parseInt()
должен делать трюк
var number = "25";
var sum = parseInt(number) + 10;
var pin = number + 10;
дает
sum == 35
pin == "2510"
Я добавляю этот ответ, потому что я не вижу его здесь.
один из способов-поставить символ " + " перед значением
пример:
var x = +'11.5' + +'3.5'
x = = = 15
Я нашел, что это самый простой способ
в этом случае строка:
dots = document.getElementById("txt").value;
можно заменить на
dots = +(document.getElementById("txt").value);
чтобы заставить его ряд
Примечание:
+'' === 0
+[] === 0
+[5] === 5
+['5'] === 5
обновлено с момента последнего понижения....
Я видел только часть
var dots = 5
function increase(){
dots = dots+5;
}
раньше, но позже мне было показано, что txt
box подает переменную 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>
очевидно, вы могли бы сделать это и с regex, но я выбрал ленивый выход.
С тех пор вы знали бы, что только цифры могут быть в коробке, вы должны иметь возможность просто использовать eval()
:
dots = eval(dots) + 5;