我正在开发一个简单的html / javascript乘法游戏,其中我有一个乘法表,其中包含一些输入,用于表示产品的结果。在那场比赛中,你需要尽可能快地回答尽可能多的问题。为了方便玩家,我将一个事件分配给输入键,以便在按下时移动到下一个输入。
以下是突出显示行和输入键事件的javascript代码:
for (var i=0; i<boardInputArray.length; i++) {
boardInputArray[i].onkeydown = (function(nextBox) {
return function(e) {
if(e.keyCode == 13) {
if(nextBox==boardInputArray.length) {boardInputArray[0].focus();boardInputArray[0].select();}
else {boardInputArray[nextBox].focus();boardInputArray[nextBox].select();}
var gameCompleted = true;
for(var c=0;c<boardInputArray.length;c++) {
if(boardInputArray[c].value == '') {gameCompleted = false;}
}
if(gameCompleted) validateGame();
}
}
})(i+1);
}
我不想在这里发布整个代码,因为它很长。如果您想看到游戏的实际效果,请访问: http://www.webdesk.co.il/articles/javascript/multiplication-table-game.php
问题在于:我希望每按一次Enter键,它会检查以下输入是否为空。如果它不为空 - 跳到下一个,依此类推,直到找到空输入。这样,玩家可以回到他没有回答的问题,而不是通过他回答的所有问题。有意义吗?
答案 0 :(得分:2)
您可以改进此代码,但它确实会移动到下一个空框。
for (var i=0; i<boardInputArray.length; i++) {
boardInputArray[i].onkeydown = (function(currentBox) {
return function(e) {
if(e.keyCode == 13) {
var gameCompleted = true;
if(boardInputArray[currentBox].value == '')
gameCompleted = false;
for (
var c = (currentBox + 1) % boardInputArray.length;
c != currentBox;
c = (c + 1) % boardInputArray.length
)
{
if(boardInputArray[c].value == '')
{
gameCompleted = false;
boardInputArray[c].focus();
boardInputArray[c].select();
break;
}
}
if(gameCompleted) validateGame();
}
}
})(i);
}
注意:
i
而不是i + 1
)。