【问题标题】:Getting 'For Loop' to work the same as 'forEach'让“For Loop”与“forEach”一样工作
【发布时间】:2018-11-22 07:23:59
【问题描述】:

这个使用For循环

单击另一个按钮后,它们不会变回播放按钮,而是保持暂停状态。音频暂停没有问题,只是按钮由于某种原因没有变回。

https://jsfiddle.net/pezuLqvo/85/

function hideAllButtons(button) {
  const buttons = button.querySelectorAll(".play, .pause, .speaker");
  for (let i = 0; i < buttons.length; i += 1) {
    hide(buttons[i]);
  }
}

function pauseAllButtons(buttons) {
  for (let i = 0; i < buttons.length; i += 1) {
    if (isPlaying(buttons[i])) {
      showPlayButton(buttons[i]);
    }
  }
}

function showPauseButton(button) {
  const pause = getPause(button);
  pauseAllButtons(button);
  hideAllButtons(button);
  show(pause);
  button.classList.add("active");
}

看看这个是如何设置的,你能确定我会在上面的代码中改变什么来解决这个问题吗?

这个使用 forEach

https://jsfiddle.net/pezuLqvo/84/

function hideAllButtons(button) {
  button.querySelectorAll(".play, .pause, .speaker").forEach(hide);
}

function pauseAllButtons() {
  const buttons = document.querySelectorAll(".playButton");
  buttons.forEach(function hidePause(button) {
    if (isPlaying(button)) {
      showPlayButton(button);
    }
  });
}

function showPauseButton(button) {
  const pause = getPause(button);
  pauseAllButtons();
  hideAllButtons(button);
  show(pause);
  button.classList.add("active");
}

【问题讨论】:

  • 您在发布的代码中缺少这一行 for const buttons = document.querySelectorAll(".playButton");

标签: javascript for-loop foreach


【解决方案1】:

这就是答案:

https://jsfiddle.net/pezuLqvo/93/

function pauseAllButtons() {
  const buttons = document.querySelectorAll(".playButton");
  for (let i = 0; i < buttons.length; i += 1) {
    if (isPlaying(buttons[i])) {
      showPlayButton(buttons[i]);
    }
  }
}

【讨论】:

    猜你喜欢
    • 2016-03-11
    • 1970-01-01
    • 2021-04-12
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多