javascript - jQuery 如何用同一个元素替换多个元素?

标签 javascript jquery foreach replacewith

我正在尝试在浏览器中制作 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));
    });
  }

最佳答案

这一行

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

每次都返回相同的元素,导致它四处移动,直到它在循环的最后一次迭代中稳定下来。替换为

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

应该可以解决问题。

关于javascript - jQuery 如何用同一个元素替换多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53449546/

相关文章:

javascript - 如何在不使用id的情况下将数据追加到表中?

javascript - 如何在移动网站中实现底部标签栏

javascript - 如何在 JQUERY 中使用替换来替换某些内容

jquery - slider CSS、jQuery 和布局 - 我的 slider handle 喜欢飞走

java - 使用具有 Maps 键集的流时出现 ConcurrentModificationException

c# - Foreach 循环只验证第一个元素

javascript - '@' 符号的 PHP 和 Javascript 电子邮件验证

javascript - 如何在 React-native 中解析迄今为止的毫秒数

javascript - JavaScript foreach 中的总和索引

javascript - 如何在 jquery ui 日历的下拉列表中设置年份?