(这是我的新手)我想做的是...
我知道这应该很简单。但是我无法解决为什么它不起作用的问题。我想了解为什么它不起作用。我不一定要你们为我写它。我想学习。这是我的代码...
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中的数字相加。它是将它们并排放置,而不是将它们加在一起。
答案 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>