连接而不是求和(JavaScript)

连接而不是求和(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

我是JavaScript新手,我在网上搜索了很多,但我无法解决我的问题。我知道“InnerHtml”可能是个问题,并且已经尝试了一些解决方案,但似乎没有任何效果

这是我的密码:

        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(