Как заменить несколько элементов одним и тем же элементом в jQuery? - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь сделать игру Hangman в браузере.Я генерирую случайное слово, затем отображаю одно пустое поле для каждой буквы слова, и пользователь сможет нажать кнопку с буквой, чтобы попытаться угадать, содержит ли случайное слово эту букву.Если это так, то все пустые поля, представляющие эту букву, заменяются полями с этой буквой, написанной внутри.

Моя проблема в том, что если генерируемое слово содержит букву, нажатую несколько раз, заменяется только последнее вхождениеКонец, который я рассчитывал, будет вызван неправильным использованием jQuery 'replaceWith'.Я надеюсь, что я не сделал этот звук слишком сложным, если у вас есть какие-либо вопросы, пожалуйста, спросите!

Так вот мой код:

// Get all occurences of the clicked letter and push their positions into array

  function letterClicked(id) {
    var positionsOfLetter = [];
    for (var i = 0; i < randomWord.length; i++) {
      if (randomWord[i] == id) {
        positionsOfLetter.push(i);
      }
    }
    // Replace each box at position that contains the letter clicked with a box containing the letter clicked

    positionsOfLetter.forEach(position => {
      $('#' + position).replaceWith($("#" + id));
    });
  }

1 Ответ

0 голосов
/ 23 ноября 2018

Эта строка

$('#' + position).replaceWith($("#" + id));

каждый раз возвращает один и тот же элемент, заставляя его перемещаться до тех пор, пока он не установится на последней итерации цикла.замена его на

$('#' + position).replaceWith($("#" + id).clone());

должна помочь.

...