См. Документы по appendChild
:
Метод Node.appendChild () добавляет узел в конец списка дочерних элементов указанного родительского узла. Если данный дочерний элемент является ссылкой на существующий узел в документе, appendChild () перемещает его из текущей позиции в новую позицию.
В своем первом коде вы создайте one tr
и one td
, а затем в циклах на каждой итерации вы удаляете tr
и td
из их предыдущих расположений перед добавлением их снова.
Напротив, во втором коде вы вызываете createElement
на каждой итерации, поэтому новые элементы, которые содержат переменные td
и tr
, не существуют в документ перед добавлением, поэтому ничего не удаляется, и в результате создается сетка 3x3.
На самом деле это не имеет ничего общего с областью действия - это связано с тем, что вы вы создаете новые элементы с createElement
вместо повторного использования того же элемента, который вы добавили в предыдущей итерации.