我需要 javascript 将 5 添加到整数变量,但它会将变量视为字符串,因此它会写出变量,然后将 5 添加到“字符串”的末尾。我怎样才能强迫它做数学呢?
var dots = document.getElementById("txt").value; // 5
function increase(){
dots = dots + 5;
}
输出:
55
如何强制输出
10
?
你有线
dots = document.getElementById("txt").value;
在你的文件中,这会将点设置为字符串,因为 txt 的内容不限于数字。
将其转换为 int 将行更改为:
dots = parseInt(document.getElementById("txt").value, 10);
注意:这里的
10
指定十进制(以10为底)。没有这个,一些浏览器可能无法正确解释字符串。参见 MDN:parseInt
.
最简单的:
dots = dots*1+5;
点将转换为数字。
不要忘记 - 如果您处理小数,请使用
parseFloat();
。
我添加这个答案是因为我在这里看不到它。
一种方法是在值前面放一个'+'字符
例子:
var x = +'11.5' + +'3.5'
x === 15
我发现这是最简单的方法
在这种情况下,行:
dots = document.getElementById("txt").value;
可以改成
dots = +(document.getElementById("txt").value);
强制它为一个数字
注意:
+'' === 0
+[] === 0
+[5] === 5
+['5'] === 5
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
.
这也适用于您:
dots -= -5;
你可以在变量后面加上+,它会强制它是一个整数
var dots = 5
function increase(){
dots = +dots + 5;
}
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
真的很简单
var total = (1 * yourFirstVariablehere) + (1 * yourSecondVariablehere)
这会强制 javascript 倍增,因为在 javascript 中没有混淆 * 符号。
在针对我的特定案例尝试了这里的大部分答案但没有成功之后,我想出了这个:
dots = -(-dots - 5);
+ 号是混淆 js 的东西,这完全消除了它们。易于实施,如果可能难以理解。
自上次投票以来已更新....
我只看到了部分
var dots = 5
function increase(){
dots = dots+5;
}
before,但后来我看到
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;