如何在用户输入发生之前暂停脚本

时间:2017-04-22 20:14:11

标签: javascript

我正在进行连接四场比赛。 当一个人类玩家玩游戏时,我希望他能够点击他想要移动的列。

我正在加入一些合法的列,以便进入。 以下代码将根据玩家点击的列返回legalMoves中的项目。只要没有点击合法列,代码就会暂停并等待。

现在,似乎忽略了addEventListeners的行,代码只是继续运行而不等人类输入。

// array of legal moves, eg.[0,1,3,5,6]
let legalMoves = game.getLegalMoves();

// initialization with -1 to check if it changes
let humanMove = -1;

//column nodes
let node = document.getElementsByClassName("column");

// my try of getting at least the first column to work
node[0].addEventListener("click", function () {
                    humanMove = 0;
});
/* pseudo code:
while(humanmove===-1){
wait here until one event listener fires
}*/
// returns -1 every time :'(
return humanMove;

1 个答案:

答案 0 :(得分:0)

虽然如果OP提供了“游戏”的HTML并定义了方法getLegalMoves(),我会更喜欢,但我修改了代码,做了一个特别重要的改变。注意,我不确定为什么当OP不包含在代码块中时,OP使用“let”来定义全局范围中的变量,即用大括号定义。也就是说,这是一个有效的修改版本。关键变化包括摆脱return语句,因为JavaScript只允许从函数或方法返回值。

HTML:

<div id="game">
<div class="column">
<button>Test</button>
</div>
</div>

CSS:

.column {
    color:blue;
}

JS:

// array of legal moves, eg.[0,1,3,5,6]
//let legalMoves = game.getLegalMoves();

// initialization with -1 to check if it changes
let humanMove = -1;

//column nodes
var node = document.getElementsByClassName("column");
node[0].addEventListener("click", function() {
  humanMove = 0;
  console.log(humanMove);
});

工作示例here