Javascript 生成1-100之间的整数
这应该会产生一个介于1-100之间的整数,我相信代码是正确的,但是如果用户尝试猜测计算机选项,它似乎会生成一个十进制数,这会破坏游戏 问题:我是否需要调整我写这篇文章的方式,使它在我的代码中工作Javascript 生成1-100之间的整数,javascript,jquery,Javascript,Jquery,这应该会产生一个介于1-100之间的整数,我相信代码是正确的,但是如果用户尝试猜测计算机选项,它似乎会生成一个十进制数,这会破坏游戏 问题:我是否需要调整我写这篇文章的方式,使它在我的代码中工作 userChoice是字符串,computerChoice是数字 userChoice = parseInt($(this).text(),10); 通过将userChoice字符串转换为整数,确保正在进行数字比较(而不是字母比较): userChoice = parseInt($(this).te
userChoice是字符串,computerChoice是数字
userChoice = parseInt($(this).text(),10);
通过将userChoice字符串转换为整数,确保正在进行数字比较(而不是字母比较):
userChoice = parseInt($(this).text(), 10);
这将如何生成十进制数?通过使用
userChoice==computerChoice
而不是=
进行修复。显然,类型不匹配computerChoice
是一个数字,我没有查看userChoice
来自哪里,但它是一个字符串您可能需要自己关闭问题:)当您从DOM中读取textContent
时,它将是一个字符串。您生成的是一个数字。因此,当您对它们执行==
操作时,也会检查它们是否是相同的类型,这显然是失败的。提示:学习在浏览器中使用控制台/调试器(所有现代浏览器都有),否则您将完全迷失方向,甚至找不到像这样最简单的bug。千万不要像这样使用parseInt
。始终指定第二个参数。另外,Javascript中没有int
类型。@卡帕真的不明白为什么从来不这样使用parseInt?第二个参数就是基数,如果我们只关心十进制基数,默认情况下它是10
,因此我们不需要将10
作为第二个参数传递。看起来这是支持旧版本浏览器的原因,而默认基数是8
。不知道这些版本有多旧。@KingKing IE8肯定犯了这个错误,我不知道旧的Android浏览器。现代浏览器默认使用10。不过,只包含第二个参数更容易、更安全。它不会引起任何问题,但在某些情况下它可以救你的命:)。注意:删除了我的否决票。是的,如果它以0开头,它将被视为八进制。Javascript严格模式将此行为更改为默认值16(如果它以“0x”开头),否则它总是10,但显然您不应该相信所有浏览器都会遵守这一点。始终设置基数参数。我在日期验证代码中犯了这个错误,该代码在8月份不知何故停止工作。:)
userChoice = parseInt($(this).text(), 10);