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
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
用作正式文档。