我正在测试一个简单的代码:
我的代码:
setInterval(function(){var a=document.getElementById("myInputBox").value;var b=a+1;a.value=b;},1000);
我尝试每隔1秒将1
添加到该输入框的值。
例如,如果框的值为1
,那么在1秒后它应该变为2
,....等等......
但它加入了框的值,例如11
而不是2
。
为什么?
答案 0 :(得分:2)
var b = parseInt(a) + 1;
a
是一个字符串,因此默认情况下+
被解释为字符串连接。要修复,请将a
传递给parseInt
,因为它返回一个类型整数。现在+
成为数学运算符。
额外学分:
var b = parseInt(a, 10) + 1;
要获得额外的完整性度量,请传递第二个( radix )参数,确保 base 10 用于确定返回整数值。
答案 1 :(得分:2)
尝试使用完整代码&演示:强>
从inputbox获取值是一个字符串,因此无法以数学方式计算。所以,首先使用函数parseInt
将字符串转换为数字,然后计算并放入框中。
setInterval(function() {
var box = document.getElementById("myInputBox");
var r = parseInt(box.value, 10) + 1;
box.value = r;
}, 1000);

<input type="text" id="myInputBox" value="1" />
&#13;