Ошибка подразумевает, что currentLetter
назначено значение, которое не является элементом DOM (поскольку каждый элемент DOM имеет свойство dataset
).
Единственные места, которые вы назначаете для currentLetter
, находятся в init
:
currentLetter = allLetters[0];
и formatPuzzle
:
currentLetter = puzzleLetter;
allLetters[0]
будет элементом DOM.
puzzleLetter
является параметром formatPuzzle
, поэтому давайте посмотрим, вызывается ли функция и передается ли что-то, что является не элементом DOM.
В selectLetter
вы вызываете formatPuzzle
несколько раз с разными аргументами, но ни один из них не является элементом DOM. Например. leftLetter
- это значение currentLetter.dataset.left
.
Может быть, вы хотели сделать
var leftLetter = documnent.getElementById(currentLetter.dataset.left);
// etc
Убедитесь, что вы передаете в функцию только элементы DOM, и по возможности избегайте глобальных переменных.