Проблема рекурсии javascript с функцией, которая вызывает себя несколько раз

У меня есть 2 таблицы, одна над другой, и в одной из них каждая ячейка имеет идентификатор вроде 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)
}

person Florin George Baciu    schedule 07.03.2021    source источник
comment
Что ты имеешь в виду, что он никогда не проходит первого if? Он вообще никогда не повторяется? Только первое, если не работает?   -  person samuei    schedule 07.03.2021
comment
@samuei только первый if из этой последовательности if выполняется, остальные игнорируются   -  person Florin George Baciu    schedule 07.03.2021
comment
Предоставьте достаточно html для создания работающего минимального воспроизводимого примера и дайте нам более подробное объяснение того, как показанная функция нуждается в работать. Скорее всего, есть гораздо более простой подход к этому   -  person charlietfl    schedule 07.03.2021
comment
Итак, на вашей странице есть одна ошибка - вы читаете столбцы и строки как строки, а не числа. В этих условиях JS может быть странным: 1 + 1 = 11, тогда как 1-1 = 0. Всегда лучше преобразовывать в число - возможно, это связано с вашей проблемой. Используйте parseInt для преобразования строки в int.   -  person Euan Smith    schedule 07.03.2021
comment
Я предполагаю, что ваше первое условие всегда выполняется, и теперь вы застряли в цикле, когда снова запускаете функцию. Я не вижу, как вы меняете значение innnerHTML .... Также вы хотите, чтобы условие не было пустым, чтобы вы могли очистить! = Вместо ==   -  person Jack Dane    schedule 07.03.2021
comment
@charlietfl здесь полная страница: codepen.io/florin-baciu-the -typescripter / pen / MWbqxJp   -  person Florin George Baciu    schedule 07.03.2021
comment
очень плохая техника. Доступ к ячейкам таблицы можно получить с помощью методов .rows[ ] и .cells[ ], и, пожалуйста, прекратите кодирование в HTML_1 и используйте теги thead и tbody!   -  person Mister Jojo    schedule 07.03.2021
comment
@MisterJojo, спасибо за советы, я новичок, поэтому приветствуются все советы   -  person Florin George Baciu    schedule 07.03.2021
comment
Кажется, что первое условие теста ‹code› if (cell00 && cell00.innerHTML ==) ‹/code› всегда выполняется, поэтому ваш код входит в тупиковый цикл. Кажется, что серию из 8 тестов нужно исключить из функции, которая, кстати, не имеет веской причины для повторения.   -  person Jean-François    schedule 07.03.2021
comment
Я ответил на stackoverflow.com/questions/66099102/, это похоже на аналогичный вопрос?   -  person Mister Jojo    schedule 09.03.2021