【问题标题】:variable incrementing returns NaN变量递增返回 NaN
【发布时间】:2015-02-09 19:42:35
【问题描述】:

我正在尝试用 Javascript/HTML/CSS 创建一个应用程序来运行棋盘游戏,这样我就可以教我 11 年级和 12 年级的学生做同样的事情。大多数情况下,我已经让它工作了,包括掷骰子,但我有一个计数器可以确定轮到谁在其中一个回合返回 NaN。它确实返回所有其他回合,但也添加了 NaN。

我没有使用 for() 循环,因为它位于启动玩家回合的给定函数内。我在网上和 StackOverflow 上找到的所有答案都是指使用 for() 循环的计数器中的问题。

这是我的代码:

var p1="Name1";
var p2="Name2";
var p3="Name3";
var playerList=new Array(p1, p2, p3);

var pTurn=0;
var currentPlayer=playerList[pTurn];

function nextPlayer() {
    pTurn++;
    if(pTurn<playerList.length) {
        pTurn=0;
    }
    currentPlayer=playerList[pTurn];
  /* the rest of the function sends the data to the html page and works */
  }

【问题讨论】:

  • 上面的代码总是将 currentPlayer 设置为“Name1”,用这个代替:currentPlayer = playerList[pTurn = (++pTurn)%playerList.length];

标签: javascript variables counter


【解决方案1】:

pTurn 对列表来说太 时,您需要重置它。那就是:

if (pTurn >= playerList.length) {
  pTurn = 0;
}

var p1 = "Name1";
var p2 = "Name2";
var p3 = "Name3";
var playerList = new Array(p1, p2, p3);

var pTurn = 0;
var currentPlayer = playerList[pTurn];

function nextPlayer() {
  pTurn++;
  if (pTurn >= playerList.length) {
    pTurn = 0;
  }
  currentPlayer = playerList[pTurn];
}

for (var i = 0; i < 10; ++i) {
  console.log(currentPlayer);
  nextPlayer();
}

【讨论】:

  • 我有一种感觉,这是最重要的。我的鳄鱼倒了。
  • @PaulRoub 如果您在作业中使用%,也可以完全避免if 检查。
猜你喜欢
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
  • 2019-05-03
  • 1970-01-01
  • 2014-11-19
  • 2018-05-09
  • 2017-03-03
  • 2015-03-16
相关资源
最近更新 更多