首页 > 解决方案 > 多次调用自身的函数的javascript递归问题

问题描述

我有 2 个表,一个在一个之上,下面的一个有每个单元格 ID,比如“colxrowy”,上面一个是“OverColxrowy”,其中 x 和 y 是数字。
我从上面创建了一个函数,如果下表中没有任何内容,它应该从上面清除表格中单元格的背景颜色,但如果它永远不会首先通过。我应该怎么办?

function clearBlankAround(cellId) {
  var col=0,row=0;
  col=cellId.charAt(3);
  row=cellId.charAt(7);
  document.getElementById("OverCol"+col+"row"+row).style.backgroundColor="";
  cell00 = document.getElementById("col" + (col - 1) + "row" + (row - 1));
  cell01 = document.getElementById("col" + col       + "row" + (row - 1));
  cell02 = document.getElementById("col" + (col + 1) + "row" + (row - 1));
  cell10 = document.getElementById("col" + (col - 1) + "row" + row);
  cell12 = document.getElementById("col" + (col + 1) + "row" + row);
  cell20 = document.getElementById("col" + (col - 1) + "row" + (row + 1));
  cell21 = document.getElementById("col" + col       + "row" + (row + 1));
  cell22 = document.getElementById("col" + (col + 1) + "row" + (row + 1));
  var x=0;z=0;
  
  for(x=-1;x<2;x++)
  for(z=-1;z<2;z++)
    if(document.getElementById("OverCol"+(col+x)+"row"+(row+z)))
      document.getElementById("OverCol"+(col+x)+"row"+(row+z)).style.backgroundColor=""

  if(cell00&&cell00.innerHTML=="")  clearBlankAround(cell00.id) //"first if"
  if(cell01&&cell01.innerHTML=="")  clearBlankAround(cell01.id)
  if(cell02&&cell02.innerHTML=="")  clearBlankAround(cell02.id)
  if(cell10&&cell10.innerHTML=="")  clearBlankAround(cell10.id)
  if(cell12&&cell12.innerHTML=="")  clearBlankAround(cell12.id)
  if(cell20&&cell20.innerHTML=="")  clearBlankAround(cell20.id)
  if(cell21&&cell21.innerHTML=="")  clearBlankAround(cell21.id)
  if(cell22&&cell22.innerHTML=="")  clearBlankAround(cell22.id)
}

标签: javascriptminesweeper

解决方案


推荐阅读