编辑:有几个帖子被建议作为答案,但这两个帖子中的任何一个都没有很好的工作。我都试过了。
主要感谢:用户Eazy在他的建议中发表了进一步的评论,解决了这个问题。事实证明,正确的方法是将整个paresInt数学放在括号中:
List += "“+ listi.team + "”+ (parseInt(listi.wins) + parseInt(listi.ties) + parseInt(listi.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,因此这些项显然不是字符串。正如我所说的,代码可以与除+以外的所有其他运算符一起使用。为什么会这样呢?
发布于 2018-06-19 04:32:10
我建议你使用parseInt()
将返回值强制转换为整数。
因此,您的代码可能如下所示:
List += "<tr><td>" + list[i].team + "</td><td>" +
parseInt(list[i].wins) + parseInt(list[i].ties) + parseInt(list[i].lost) "</td></tr>"
发布于 2018-06-19 04:29:02
@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/
https://stackoverflow.com/questions/50916822
复制相似问题