如何在pgn[46]处停止数组迭代,防止按钮点击后循环重置
解决办法
- 移除循环重置逻辑:删掉导致索引回到0的代码,避免棋子重复移动。
- 添加停止判断:在按钮点击事件中加入索引检查,仅当索引小于46时执行移动操作,到达46后不再响应点击。
修改后的完整代码:
$('#move1Btn').on('click', function () { // 仅在索引未达到46时执行移动 if (intpgnIndex < 46) { board.move(pgn[intpgnIndex]); intpgnIndex++; } }) var pgn = new Array() pgn[0] = "" pgn[1] = "e2-e4" pgn[2] = "e7-e5" pgn[3] = "f2-f4" pgn[4] = "e5-f4" pgn[5] = "f1-c4" pgn[6] = "d8-h4" pgn[7] = "e1-f1" pgn[8] = "b7-b5" pgn[9] = "c4-b5" pgn[10] = "g8-f6" pgn[11] = "g1-f3" pgn[12] = "h4-h6" pgn[13] = "d2-d3" pgn[14] = "f6-h5" pgn[15] = "f3-h4" pgn[16] = "h6-g5" pgn[17] = "h4-f5" pgn[18] = "c7-c6" pgn[19] = "g2-g4" pgn[20] = "h5-f6" pgn[21] = "h1-g1" pgn[22] = "c6-b5" pgn[23] = "h2-h4" pgn[24] = "g5-g6" pgn[25] = "h4-h5" pgn[26] = "g6-g5" pgn[27] = "d1-f3" pgn[28] = "f6-g8" pgn[29] = "c1-f4" pgn[30] = "g5-f6" pgn[31] = "b1-c3" pgn[32] = "f8-c5" pgn[33] = "c3-d5" pgn[34] = "f6-b2" pgn[35] = "f4-d6" pgn[36] = "c5-g1" pgn[37] = "e4-e5" pgn[38] = "b2-a1" pgn[39] = "f1-e2" pgn[40] = "b8-a6" pgn[41] = "f5-g7" pgn[42] = "e8-d8" pgn[43] = "f3-f6" pgn[44] = "g8-f6" pgn[45] = "d6-e7" pgn[46] = "" pgn[47] = "" pgn[48] = "" pgn[49] = "" var intpgnIndex = 0;
关键修改说明
- 按钮点击逻辑优化:新增
intpgnIndex < 46的判断条件,确保索引到达46后,点击按钮不会执行任何移动操作,自然停止迭代。 - 删除循环重置代码:原
writeThing函数中重置索引为0的逻辑是重复移动的根源,现在直接将索引递增逻辑整合到点击事件的判断内,无需保留该函数,彻底避免循环问题。
内容的提问来源于stack exchange,提问作者GiCl90
相关产品推荐
相关产品推荐

