Как заставить JS делать математику вместо того, чтобы складывать две строки вместе


мне нужен javascript, чтобы добавить 5 к целочисленной переменной, но вместо этого он обрабатывает переменную как строку, поэтому он записывает переменную, а затем добавляет 5 в конец "строки". Как я могу заставить его делать математику вместо этого?

var dots = 5
function increase(){
    dots = dots + 5;
}

выходы: 55

как я могу заставить его выхода 10?

это может быть ошибка в моем скрипте где-то?

Я инициализации dots такой:

dots = document.getElementById("txt").value;
7 87

7 ответов:

у вас есть строка

dots = document.getElementById("txt").value;

в вашем файле это установит точки как строку, потому что содержимое txt не ограничено числом.

преобразовать его в int измените строку:

dots = parseInt(document.getElementById("txt").value);

простейший:

dots = dots*1+5;

точки будут преобразованы в числа.

Не забудьте-используйте parseFloat(); Если вы имеете дело с десятичными знаками.

parseInt() должен делать трюк

var number = "25";
var sum = parseInt(number) + 10;
var pin = number + 10;

дает

sum == 35
pin == "2510"

http://www.w3schools.com/jsref/jsref_parseint.asp

Это также работает для вас:

dots -= -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

обновлено с момента последнего понижения....

Я видел только часть

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;