Javascript 在单独的div中将数字相加

Javascript 在单独的div中将数字相加,javascript,html,string,add,innerhtml,Javascript,Html,String,Add,Innerhtml,(我是新手)我想做的是 获取DIV ID的内容(一个数字) 把这些数字加起来 在“at”分区中打印它们 我知道这应该非常简单。但我无法理解为什么它不起作用。我想知道为什么它不起作用。我不一定要你们帮我写。我想学习。这是我的密码 var at = document.getElementById("a-total"); var ac = document.getElementById("a-coffee").innerHTML; var ah = document.getElementById("a

(我是新手)我想做的是

  • 获取DIV ID的内容(一个数字)
  • 把这些数字加起来
  • 在“at”分区中打印它们
  • 我知道这应该非常简单。但我无法理解为什么它不起作用。我想知道为什么它不起作用。我不一定要你们帮我写。我想学习。这是我的密码

    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中的数字相加。它是将它们并排放置,而不是将它们添加在一起

    这是因为您只执行了
    字符串
    串联

    您需要将值转换为
    数字
    ,因为
    .innerHTML()
    返回一个
    字符串
    。这是您应该如何操作的:

    var addopt = +ac + +ah + +af;
    
    注意:


    最好使用或超过
    .innerHTML
    ,以避免在结果中有任何标记时在元素中获得
    HTML
    标记。

    div的内容是字符串,即使它们代表数字。因此,如果div的值为“1”、“2”和“3”,那么将它们相加会得到“123”,而不是预期的6。查看parseInt函数,了解如何将字符串转换为数字。
    这种情况经常发生。您需要做的是将其转换为整数,因为它使用
    ParseInt(variable)
    ParsefLoat(variable)
    ParsefLoat(variable)将其读取为字符串,也可以使用
    。toFixed(小数点)

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


    所以要么
    var addopt=+ac++ah++af
    var addopt=parseInt(ac)+parseInt(ah)+parseInt(af)应该适合您。

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


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

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

    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>
    
    
    var at=document.getElementById(“a-总计”);
    var ac=document.getElementById(“a-coffee”).innerHTML;
    var ah=document.getElementById(“a-hobby”).innerHTML;
    var af=document.getElementById(“a-fundme”).innerHTML;
    //将值作为字符串,并将其转换为int。
    //我们还检查值是否未定义。
    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;
    函数原子(){
    如果(addopt>=0){
    at.innerHTML=addopt;
    }否则{
    控制台日志(“tis已损坏”);
    }
    }
    原子();
    
    从div中检索到的值为string类型。您必须将它们转换为数字。您的
    ac
    等将成为字符串,您需要将它们转换为数字,然后addinginnerHTML将返回字符串。转换为浮点/整数,它应该可以工作。这可以通过使用parseFloat或parseInt来完成。祝你好运!不要忘记检查值是否未定义,这样可以避免出现意外情况。如果第一个字符无法转换为数字,则parseInt将返回其正常工作状态。它是解析的一部分吗?连接到+ac的+是否表示或转换为某物?对不起,我只是想学习。它工作得很好。我只是想知道为什么。非常感谢。@WilliamGarrison一元“+运算符是在JavaScript中将字符串转换为数字的快捷方式,请查看更多详细信息。请避免包含wschool引用,最好将
    MDN
    用作正式文档。