除了加法(+)

时间:2018-06-18 20:14:01

标签: javascript jquery operators

编辑:有一些线程建议作为答案,但任何一个线程的想法都没有完全奏效。我尝试了所有这些。

主要谢谢你: 用户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被正确计算,所以项目显然不是字符串。正如我所说,代码可以与除+之外的所有其他运算符一起使用。这是为什么?

3 个答案:

答案 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>"