将单独的DIV中的数字相加

时间:2018-12-17 15:46:29

标签: javascript html string add innerhtml

(这是我的新手)我想做的是...

  1. 获取DIV ID的内容(数字)。
  2. 将这些数字加在一起
  3. 在“ at” DIV中打印它们。

我知道这应该很简单。但是我无法解决为什么它不起作用的问题。我想了解为什么它不起作用。我不一定要你们为我写它。我想学习。这是我的代码...

var at = document.getElementById("a-total");
var ac = document.getElementById("a-coffee").innerHTML;
var ah = document.getElementById("a-hobby").innerHTML;
var af = document.getElementById("a-fundme").innerHTML;

var addopt = ac + ah + af;

function aTotal (){
    if (addopt >= 0){
        at.innerHTML = addopt;
    } else {
        console.log("tis broken");
    }
}

aTotal();

它可以正确输出,但是只是不将DIV中的数字相加。它是将它们并排放置,而不是将它们加在一起。

6 个答案:

答案 0 :(得分:2)

这是因为您仅在进行string串联

您需要将值转换为numbers,因为.innerHTML()返回string。这应该是您的操作方式:

var addopt = +ac + +ah + +af;

注意:

最好在.innerHTML上使用.innetrText().textContent(),以避免在元素中包含HTML标记(如果结果中包含标记)。

答案 1 :(得分:0)

即使代表数字,div的内容也是字符串。因此,如果您的div的值分别为“ 1”,“ 2”和“ 3”,则将它们加在一起将得到“ 123”,而不是您可能期望的6。看一下parseInt函数,看看如何将字符串转换成数字。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

答案 2 :(得分:0)

这种情况经常发生。您需要做的是将其转换为整数,因为它使用ParseInt (variable)ParsefLoat (variable) ParsefLoat(变量)将其读取为字符串,也可以使用.toFixed (decimal_places)

答案 3 :(得分:0)

您必须将div的内容解析为数字,因为innerHTML返回一个字符串。

因此var addopt = +ac + +ah + +af;var addopt = parseInt(ac) + parseInt(ah) + parseInt(af);应该对您有用。

答案 4 :(得分:0)

您需要将innerHTML解析为整数或浮点数,以便能够对其进行数学运算。检查下面的代码以获取文本并将其解析为整数:

var addopt = parseInt(ac) + parseInt(ah) + parseInt(af);

答案 5 :(得分:0)

您尝试添加字符串而不是数字。

innerHTML返回HTML元素中的字符串。

您应该parseInt或parseFloat内容以具有数字。

<script>
var at = document.getElementById("a-total");
var ac = document.getElementById("a-coffee").innerHTML;
var ah = document.getElementById("a-hobby").innerHTML;
var af = document.getElementById("a-fundme").innerHTML;

// Values are taken as string and mus be converted to int.
// We check also that a value is not undefined.
ac = isNaN(parseInt(ac)) ? 0 : parseInt(ac);
ah = isNaN(parseInt(ah)) ? 0 : parseInt(ah);
af = isNaN(parseInt(af)) ? 0 : parseInt(af);

var addopt = ac + ah + af;

function aTotal (){
    if (addopt >= 0){
        at.innerHTML = addopt;
    } else {
        console.log("tis broken");
    }
}

aTotal();
</script>