【问题标题】:Javascript, points get appended instead of added to the score field?Javascript,分数被附加而不是添加到分数字段?
【发布时间】:2014-09-20 17:30:56
【问题描述】:

我查找了其他有相同问题的人,似乎问题在于您需要解析为整数。我试过了,但它仍然是附加分数而不是将其添加到分数中。我一定是 pareseInt 做错了,但我不确定是什么...

这是我的代码的 sn-p

var gameButton = function(){
var userVariable = (document.getElementById("userInput").value);
var gameSecret = Math.floor(Math.random() * 100 +1);
var points = userVariable * 3.14;
var score = 0;

//check if valid entry
if(userVariable <2) {
alert("You must choose a number between 2 - 100");
} else {

//check game result
if(gameSecret>userVariable){
document.getElementById('gameSecret').innerHTML ="You won! Game Secret was " +gameSecret;
document.getElementById('points').innerHTML ="You won " +points +" points!";

//I'm pretty certain these next few lines is where I messed up
var points2 = parseInt(points, 10);
var score2 = parseInt(score, 10);
document.getElementById('score').innerHTML += score2+points2;
} else {

【问题讨论】:

  • 我认为您只需要通过= 而不是+= 设置innerHTML。同样应该先计算结果(score2+point2)
  • @KingKing 刚试过,但现在它没有追加或添加。无论该轮的分数是多少,分数字段都保持不变。
  • 如何在添加之前验证您是否确实获得了一个数字:if(Number.isInteger(parseInt(someData)){};

标签: javascript numbers parseint


【解决方案1】:

+ 运算符是左右关联的,因此串联胜过加法。此外,您必须将字段的现有值作为数字获取才能添加到其中:

var score = document.getElementById('score').innerHTML;
...
var score2 = parseInt(score, 10);
document.getElementById('score').innerHTML = score2 + points2;

【讨论】:

  • 感谢这有帮助,但它没有立即工作。原来我没有问正确的问题。折腾了好久,终于搞定了。问题是我没有使用全局变量来评分。我把它放在函数中,所以它总是重置为 0。
猜你喜欢
  • 2018-12-07
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
相关资源
最近更新 更多