109

我需要 javascript 将 5 添加到整数变量,但它会将变量视为字符串,因此它会写出变量,然后将 5 添加到“字符串”的末尾。我怎样才能强迫它做数学呢?

var dots = document.getElementById("txt").value; // 5
function increase(){
    dots = dots + 5;
}

输出:55

我怎样才能强制它输出10

4

11 回答 11

116

你有线

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

在您的文件中,这会将点设置为字符串,因为 txt 的内容不限于数字。

将其转换为 int 将行更改为:

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

注意:10这里指定十进制(base-10)。如果没有这个,一些浏览器可能无法正确解释字符串。见 MDN parseInt:.

于 2011-01-30T05:53:24.600 回答
63

最简单的:

dots = dots*1+5;

点将转换为数字。

于 2011-01-30T06:18:46.070 回答
23

不要忘记 -parseFloat();如果您处理小数,请使用。

于 2013-09-25T05:38:26.310 回答
15

我正在添加这个答案,因为我在这里看不到它。

一种方法是在值前面放置一个“+”字符

例子:

var x = +'11.5' + +'3.5'

x === 15

我发现这是最简单的方法

在这种情况下,该行:

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

可以改为

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

将其强制为一个数字

笔记:

+'' === 0
+[] === 0
+[5] === 5
+['5'] === 5
于 2017-03-17T12:11:05.180 回答
8

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

注意:10inparseInt(number, 10)指定十进制(base-10)。如果没有这个,一些浏览器可能无法正确解释字符串。见 MDN parseInt:.

于 2013-12-19T23:21:48.833 回答
5

这也适用于您:

dots -= -5;
于 2016-05-28T07:51:51.093 回答
3

您可以在变量后面添加 + ,它将强制它为整数

var dots = 5
    function increase(){
        dots = +dots + 5;
    }
于 2019-01-05T17:53:28.010 回答
3

数字()

dots = document.getElementById("txt").value;
dots = Number(dots) + 5;

// from MDN
Number('123')     // 123
Number('123') === 123 /// true
Number('12.3')    // 12.3
Number('12.00')   // 12
Number('123e-1')  // 12.3
Number('')        // 0
Number(null)      // 0
Number('0x11')    // 17
Number('0b11')    // 3
Number('0o11')    // 9
Number('foo')     // NaN
Number('100a')    // NaN
Number('-Infinity') //-Infinity
于 2020-12-08T13:21:20.027 回答
1

它真的很简单

var total = (1 * yourFirstVariablehere) + (1 * yourSecondVariablehere)

这会强制 javascript 成倍增加,因为在 javascript 中没有 * 符号混淆。

于 2018-11-05T07:19:05.350 回答
1

在针对我的特定案例尝试了大多数答案但没有成功之后,我想出了这个:

dots = -(-dots - 5);

+ 符号是混淆 js 的地方,这完全消除了它们。易于实施,如果可能难以理解。

于 2019-12-16T20:14:01.510 回答
-3

自上次投票以来已更新....

我只看到了部分

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;
于 2016-03-30T14:35:34.337 回答