主要谢谢你: 用户Eazy在他的建议中进一步评论解决了这个问题。事实证明,正确的方法是将整个paresInt数学放在括号中:
List + =“”+ list [i] .team +“”+(parseInt(list [i] .wins)+ parseInt(list [i] .ties)+ parseInt(list [i] .lost)) “”
最初的问题:
所以我正在制作一个js代码来从数据库中打印一个表。该数据库包含一个足球联赛表,其中包含球队名称,比赛胜利,并列和失败。当我将表格打印到HTML时,我想要计算所玩游戏和总分数,因为数据库不提供信息。
最奇怪的是,如果我从表中乘以(*)值,它就可以工作。如果我减去( - )或除(/)数字,它就有效。但是如果我尝试将数字与+一起添加,代码会将数字视为字符串,并且只是将数字写入彼此。我以前遇到过这个问题,我很困惑。解决方案可能非常明显,但我无法弄明白。
如果一支球队赢了23场比赛,并列7次并且输了3次,那么最多可以打33场比赛。所以,如果我做数学:
List += "<tr><td>" + list[i].team + "</td><td>" +
list[i].wins + list[i].ties + list[i].lost + "</td></tr>"
返回2373
如果我使用不同的运算符,如乘法:
List += "<tr><td>" + list[i].team + "</td><td>" +
list[i].wins * list[i].ties * list[i].lost + "</td></tr>"
它返回483 wichs被正确计算,所以项目显然不是字符串。正如我所说,代码可以与除+之外的所有其他运算符一起使用。这是为什么?
答案 0 :(得分:2)
JavaScript的输入极其微弱。它假定所有可能是字符串 的字符串,因此它会连接数字,因为为字符串定义了加法。没有为字符串定义乘法,除法和减法,因此编译器将首先检查是否可以进行整数运算。
您可能希望使用parseInt()功能来保证数字处理正确。
答案 1 :(得分:0)
@Brandon Wyatt告诉你的parseInt()替代方法是将变量放在括号内。
const list = [
{team: 'Team 1', wins: 5, ties: 3, lost: 2},
{team: 'Team 2', wins: 2, ties: 3, lost: 5}
]
let content = "";
for (let i = 0; i < list.length; i++) {
content += "<tr><td>" + list[i].team + "</td><td>" + (list[i].wins + list[i].ties + list[i].lost) + "</td></tr>";
}
document.getElementById("teams").innerHTML = content;
jsfiddle与此解决方案: https://jsfiddle.net/j7nfqvmr/21/
答案 2 :(得分:0)
我建议您使用parseInt()
强制将返回的值强制为整数。
所以你的代码看起来像这样:
List += "<tr><td>" + list[i].team + "</td><td>" +
parseInt(list[i].wins) + parseInt(list[i].ties) + parseInt(list[i].lost) "</td></tr>"