除了加法(+;)之外,所有JavaScript算术运算符都可以工作
编辑:有几个线程建议作为答案,但没有一个线程上的想法非常有效。我都试过了 少校,谢谢你: 用户Eazy在他的建议中进一步评论解决了这个问题。事实证明,正确的方法是将整个帕累辛特数学放在括号中: List+=“”+List[i].team++(parseInt(List[i].wins)+parseInt(List[i].ties)+parseInt(List[i].lost))“” 原问题: 因此,我正在制作一个js代码来从数据库打印一个表。该数据库包含一个足球联赛表,其中包括球队名称、比赛获胜、平局和失利。当我把表格打印成HTML时,我想做一些数学运算来计算玩过的游戏和总分,因为数据库没有提供这些信息除了加法(+;)之外,所有JavaScript算术运算符都可以工作,javascript,jquery,operators,Javascript,Jquery,Operators,编辑:有几个线程建议作为答案,但没有一个线程上的想法非常有效。我都试过了 少校,谢谢你: 用户Eazy在他的建议中进一步评论解决了这个问题。事实证明,正确的方法是将整个帕累辛特数学放在括号中: List+=“”+List[i].team++(parseInt(List[i].wins)+parseInt(List[i].ties)+parseInt(List[i].lost))“” 原问题: 因此,我正在制作一个js代码来从数据库打印一个表。该数据库包含一个足球联赛表,其中包括球队名称、比赛获胜
最奇怪的是,如果我将表中的(*)值相乘,它就会工作。如果我减去(-)或除以(/)这些数字,它就会起作用。但是,如果我尝试将数字与+相加,代码会将数字视为字符串,并将下一个数字相互写入。我以前遇到过这个问题,我感到困惑。这个解决方案可能非常明显,但我就是想不出来 如果一支球队赢了23场比赛,平了7场,输了3场,那么总共打了33场比赛。所以如果我算一下:
List += "<tr><td>" + list[i].team + "</td><td>" +
list[i].wins + list[i].ties + list[i].lost + "</td></tr>"
List+=''+List[i].团队+'+
列表[i]。wins+列表[i]。ties+列表[i]。丢失+“”
它返回2373
如果我使用不同的运算符,如乘法:
List += "<tr><td>" + list[i].team + "</td><td>" +
list[i].wins * list[i].ties * list[i].lost + "</td></tr>"
List+=''+List[i].团队+'+
列表[i]。wins*列表[i]。ties*列表[i]。丢失+“”
它返回正确计算的483个Wich,因此项目显然不是字符串。正如我所说的,该代码可以与除+之外的所有其他操作符一起工作。为什么会这样?JavaScript的类型非常弱。它假设所有可能是字符串的东西都是字符串,因此它将连接数字,因为加法是为字符串定义的。乘法、除法和减法不是为字符串定义的,因此编译器将首先检查整数运算是否可行
您可能希望使用该函数来保证正确处理数字。JavaScript的类型非常弱。它假设所有可能是字符串的东西都是字符串,因此它将连接数字,因为加法是为字符串定义的。乘法、除法和减法不是为字符串定义的,因此编译器将首先检查整数运算是否可行 您可能希望使用该函数来保证正确处理数字。另一种方法是@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;
const list=[
{球队:'一队',赢:5,平:3,输:2},
{球队:'第二队',赢:2,平:3,输:5}
]
让内容=”;
for(设i=0;i
使用此解决方案的JSFIDLE:
@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;
const list=[
{球队:'一队',赢:5,平:3,输:2},
{球队:'第二队',赢:2,平:3,输:5}
]
让内容=”;
for(设i=0;i
使用此解决方案的JSFIDLE:
我建议您使用
parseInt()
强制将返回值设置为整数
因此,您的代码可以如下所示:
List += "<tr><td>" + list[i].team + "</td><td>" +
parseInt(list[i].wins) + parseInt(list[i].ties) + parseInt(list[i].lost) "</td></tr>"
List+=''+List[i].团队+'+
parseInt(列表[i].wins)+parseInt(列表[i].ties)+parseInt(列表[i].lost)”“
我建议您使用parseInt()
将返回值强制为整数
因此,您的代码可以如下所示:
List += "<tr><td>" + list[i].team + "</td><td>" +
parseInt(list[i].wins) + parseInt(list[i].ties) + parseInt(list[i].lost) "</td></tr>"
List+=''+List[i].团队+'+
parseInt(列表[i].wins)+parseInt(列表[i].ties)+parseInt(列表[i].lost)”“
这两个版本都不应该工作。你有一个)
没有匹配的(
并且你在.lost“代码将数字视为字符串”之后缺少了+
。不,它们确实是字符串,所有其他操作都会强制转换为numberRoh抱歉,缺少的+和唯一的一个)(在尝试pareInt()选项后,我意外地将其留在了那里)是文章中的拼写错误,而不是实际代码中的拼写错误。这两个版本都不应该起作用。你有一个)
没有匹配的(
并且你在.lost“代码将数字视为字符串”之后缺少了+
。不,它们确实是字符串,所有其他操作都会强制转换为numberRoh抱歉,缺少的+和唯一的一个)(在尝试pareInt()选项后,我意外地将其留在了那里)是文章中的拼写错误,而不是实际代码中的拼写错误。我尝试了parseInt(list[I].wins)+等等,但没有任何效果。但这是一个非常令人不安的语言特性:)这是弱类型的一个众所周知的缺点,但它的主要优点是在大多数情况下减少了编写代码的时间。在变量没有歧义的情况下,您不必考虑使用什么类型的变量。折衷是这样的边缘情况,在这种情况下,您必须明确声明希望将其视为一个整数键,在allI尝试parseInt(list[i].wins)+等之后,这可能是一个很好的折衷,但没有任何效果。但这是一个非常令人不安的语言特性:)这是弱类型的一个众所周知的缺点,但它的主要优点是在大多数情况下减少了编写代码的时间。在变量没有歧义的情况下,您不必考虑使用什么类型的变量。折衷的办法是在这样的边缘情况下,您必须显式声明希望将其视为IntegerKey