连接而不是求和(JavaScript)
我是JavaScript新手,我在网上搜索了很多,但我无法解决我的问题。我知道“InnerHtml”可能是个问题,并且已经尝试了一些解决方案,但似乎没有任何效果 这是我的密码:连接而不是求和(JavaScript),javascript,function,concatenation,add,innerhtml,Javascript,Function,Concatenation,Add,Innerhtml,我是JavaScript新手,我在网上搜索了很多,但我无法解决我的问题。我知道“InnerHtml”可能是个问题,并且已经尝试了一些解决方案,但似乎没有任何效果 这是我的密码: function compra() { dinero = document.getElementById("precio").innerHTML; document.getElementById("tipoo").innerHTML; total = di
function compra() {
dinero = document.getElementById("precio").innerHTML;
document.getElementById("tipoo").innerHTML;
total = dinero+total;
document.getElementById("compra").innerHTML = total;
问题是,如果使用按钮显示结果,它不会添加值,只是将它们连接起来
我已经试过“parseInt”,但不起作用,或者我把它放错地方了
谢谢
编辑-----
谢谢大家的快速回复。。。当我使用parseFloat或Int时,我得到“NaN”
这是我的更多代码。。。希望能有帮助
总压缩比:$
Añadir A la Lista
innerHTML
返回字符串。如果您想将它们视为数字并添加它们,则必须转换它们
total = parseFloat(dinero) + parseFloat(total);
innerHTML
返回字符串。如果您想将它们视为数字并添加它们,则必须转换它们
total = parseFloat(dinero) + parseFloat(total);
Javascript是一种弱类型语言。所以有一些“魔法”发生了。使用+运算符时,如果两个值都是数字,则它将两个值的总和相加。否则它将执行字符串连接 使用“window.parseInt”就是诀窍。(如果使用的是十进制数,则使用window.parseFloat) 更改:
total = dinero+total;
致:
这将把作为“字符串”的数字变成实际数字。Javascript是一种弱类型语言。所以有一些“魔法”发生了。使用+运算符时,如果两个值都是数字,则它将两个值的总和相加。否则它将执行字符串连接 使用“window.parseInt”就是诀窍。(如果使用的是十进制数,则使用window.parseFloat) 更改:
total = dinero+total;
致:
这将把作为“字符串”的数字转换为实际数字。基于其他答案()和注释(),最好的选择是使用,如果数字低于1
则使用
为什么对这种情况不正确
parseInt('77.3') + parseInt('77.3') = 144 //incorrect
因此,我们使用:
但是我们有个问题…如果我们尝试:
parseFloat(0.1) + parseFloat(0.2)
结果将是
0.30000000000000004
所以我对这个问题的解决方案是:如果数字低于
1
,我们使用:
total=parseFloat(0.1)+parseFloat(0.2)
如果(总数<1){
总计=总计。toPrecion(2)//0.3正确
}
对问题的答复:
function compra() {
dinero = document.getElementById("precio").innerHTML;
document.getElementById("tipoo").innerHTML;
total = parseFloat(dinero) + parseFloat(total)
if( total < 1){
total = total.toPrecion(2);
}
document.getElementById("compra").innerHTML = total;
}
函数compra(){
dinero=document.getElementById(“precio”).innerHTML;
document.getElementById(“tipoo”).innerHTML;
总计=parseFloat(dinero)+parseFloat(总计)
如果(总数<1){
总计=总计。toPrecion(2);
}
document.getElementById(“compra”).innerHTML=total;
}
根据其他答案()和注释(),最好的选择是使用,如果数字低于1
则使用
为什么对这种情况不正确
parseInt('77.3') + parseInt('77.3') = 144 //incorrect
因此,我们使用:
但是我们有个问题…如果我们尝试:
parseFloat(0.1) + parseFloat(0.2)
结果将是
0.30000000000000004
所以我对这个问题的解决方案是:如果数字低于
1
,我们使用:
total=parseFloat(0.1)+parseFloat(0.2)
如果(总数<1){
总计=总计。toPrecion(2)//0.3正确
}
对问题的答复:
function compra() {
dinero = document.getElementById("precio").innerHTML;
document.getElementById("tipoo").innerHTML;
total = parseFloat(dinero) + parseFloat(total)
if( total < 1){
total = total.toPrecion(2);
}
document.getElementById("compra").innerHTML = total;
}
函数compra(){
dinero=document.getElementById(“precio”).innerHTML;
document.getElementById(“tipoo”).innerHTML;
总计=parseFloat(dinero)+parseFloat(总计)
如果(总数<1){
总计=总计。toPrecion(2);
}
document.getElementById(“compra”).innerHTML=total;
}
查看HTML中节点“precio”和“tipoo”的外观会很有帮助-请提供一些代码来演示内容使用更多优点:total=+dinero++total
或使用Number(dinero)
查看HTML中节点“precio”和“tipoo”的外观会很有帮助-请提供一点代码来演示内容使用更多优点:total=+dinero++total
或使用Number(dinero)
进行语义分析不要使用parseInt,Number更可靠。另外,不需要在“窗口”前面加前缀。@JordanDoyle:当然,我可以支持这种可靠性:alert(parseInt(“013”))
在IE8中,或者alert(parseInt(“13.25”))
在任何浏览器中……正如我在评论中所说的,如果您使用十进制数,请使用parseFloat
。如果您知道值将是整数,则通常使用parseInt
而不是parseFloat
。我认为您应该只使用parseInt()来转换非十进制基数或像55px
这样的“脏整数”…我不确定您所说的非十进制基数是什么意思,但是是的,我同意您应该将parseInt()
用于脏整数,如55px
,或将parseFloat()
用于脏浮点数,如33.3%
,等等……不要使用parseInt,数字更可靠。另外,不需要在“窗口”前面加前缀。@JordanDoyle:当然,我可以支持这种可靠性:alert(parseInt(“013”))
在IE8中,或者alert(parseInt(“13.25”))
在任何浏览器中……正如我在评论中所说的,如果您使用十进制数,请使用parseFloat
。如果您知道值将是整数,则通常使用parseInt
而不是parseFloat
。我认为您应该只使用parseInt()来转换非十进制基数或像55px
这样的“脏整数”…我不确定您所说的非十进制基数是什么意思,但是是的,我同意你应该使用parseInt()
和脏整数,比如55px
,或者parseFloat()
和脏浮点数,比如33.3%
,等等。如果你使用这个,请注意,OP。你想要的是parseInt
,否则你会遇到著名的。以parseFloat(0.2)+parseFloat(0.1)
为例,您将得到0.300000000000000004
。观看我链接的视频以了解更多信息。@JordanDoyle如果他的输入中有小数,他将得到0
,这是更错误的结果。@JordanDoyle看起来OP中的值可能有小数部分,所以parseInt(