使用";。“价值”;Javascript中文本框的属性
通过上面的代码,我无法得到两个数字相加的结果。如果要将它们相加,首先必须将它们转换为整数使用";。“价值”;Javascript中文本框的属性,javascript,dom,Javascript,Dom,通过上面的代码,我无法得到两个数字相加的结果。如果要将它们相加,首先必须将它们转换为整数.value始终包含字符串 document.getElementById("t3").value = document.getElementById("t1").value + document.getElementById("t2"); 试试这个: parseInt(document.getElementById("t1").
.value
始终包含字符串
document.getElementById("t3").value = document.getElementById("t1").value +
document.getElementById("t2");
试试这个:
parseInt(document.getElementById("t1").value, 10) + parseInt(document.getElementById("t2").value, 10);
实际上,您并不是在将两个数字相加。您正试图将
document.getElementById(“t1”).value
(包含数字的字符串)添加到DOM元素document.getElementById(“t2”)
您可能会得到如下结果:
document.getElementById("t3").value = parseInt(document.getElementById("t1").value,10) +
parseInt(document.getElementById("t2").value,10);
您需要(a)获取第二个元素的值
属性,并(b)将它们作为数字而不是字符串相加
43[object HTMLInputElement]
(+document.getElementById(“t1”).value)
将值转换为数字。这是。这很厚颜无耻,但OP试图更新的t3
元素很可能是div
或span
而不是输入(
:)
或
需要更多信息;#t3是什么类型的元素?表单控件值是字符串,因此
+
将值连接为字符串,而不是执行数字加法。您能给我们完整的html和javascript片段吗?你绑定到什么事件才能触发此事件?数字是整数还是你可能需要接受小数?这与OP有什么不同?@RobG OP未能获取值文档。getElementById(“t2”)。值
是,但它仍将进行串联,而不是加法。正如我在Florian的帖子中提到的,如果必须使用parseInt
,则,你真的应该使用基数参数。如果你必须使用parseInt
,你也需要使用基数参数。@lonesomeday很好,尽管我相信它在ECMAScript中默认为以10为基数5@Moob当字符串为012
?兼容ECMAScript 5的浏览器将使用base 10,但其他浏览器可能不会。那么0x12
呢?您希望浏览器如何处理此问题?(所有这些问题都是通过使用一元加运算符来解决的…)这个解决方案是精确的,但lonesomeday的解决方案非常优雅。两个答案都投了赞成票,原因各不相同。然而,当在一个经验丰富的团队中工作时,我相信这是一个更好的解决方案,因为每个人都能够立即阅读和理解。@lonesomeday我完全同意。一元加号运算符是一种方法。我只是向那些使用parseInt的人指出,在ECMAScript 5中,它默认以10为基数。
document.getElementById("t3").value = (+document.getElementById("t1").value) +
(+document.getElementById("t2").value);
var t1, t2, t3;
t1 = document.getElementById("t1");
t2 = document.getElementById("t2");
t3 = document.getElementById("t3");
t3.innerHTML = parseInt(t1.value, 10) + parseInt(t2.value, 10);
t3.innerHTML = +t1.value + +t2.value;