return false 不会阻止页面在锚点击时重新加载

return false doesn't stop page from reloading on anchor click

我们目前有一个带有 3 个自定义按钮来改变速度的视频播放器。 3 个按钮是:

更慢(点击 1 次会使视频减慢 5%,最慢的是从 100% 减慢 80%)。

正常 点击 returns 视频到 100%。

更快 与更慢相同,但速度更快,最大为 120%。

这些按钮位于页面的下方,但单击会使页面重置到顶部。我已经尝试了 e.preventDefault(); 并将每个功能设置为 return false; 但似乎都无法停止重置?此问题的可能错误或解决方案是什么?

function speedIncrease(e) {
       e.preventDefault();
    if (currentSpeed < 1.50) {
      currentSpeed = currentSpeed + 0.05;
      hapyak.playlist.get()._player.playbackRate(currentSpeed);
      updateSpeed();
    }
  }

  function speedDecrease(e) {
    e.preventDefault();
    if (currentSpeed > .8) {
      currentSpeed = currentSpeed - 0.05;
      hapyak.playlist.get()._player.playbackRate(currentSpeed);
      updateSpeed();
    }
  }

  function resetSpeed(e) {
    e.preventDefault();
    currentSpeed = 1;
    hapyak.playlist.get()._player.playbackRate(currentSpeed);
    updateSpeed();
  }

当前代码抛出 unidentified e 错误,即使我在函数的参数中识别它。

我也用 return false;

尝试过这个解决方案
function speedIncrease() {
    if (currentSpeed < 1.50) {
      currentSpeed = currentSpeed + 0.05;
      hapyak.playlist.get()._player.playbackRate(currentSpeed);
      updateSpeed();
    }
    return false;
  }

  function speedDecrease() {
    if (currentSpeed > .8) {
      currentSpeed = currentSpeed - 0.05;
      hapyak.playlist.get()._player.playbackRate(currentSpeed);
      updateSpeed();
    }
    return false;
  }

  function resetSpeed() {
    currentSpeed = 1;
    hapyak.playlist.get()._player.playbackRate(currentSpeed);
    updateSpeed();
  }

编辑:这是按钮的 HTML

<div class="video-speed-buttons-container">
  <a href="#" onclick="speedDecrease()">
      <div class="video-speed-button first">Play slower</div>
  </a>
  <a href="#" onclick="resetSpeed()">
      <div class="video-speed-button">Normal speed</div>
  </a>
  <a href="#" onclick="speedIncrease()">
       <div class="video-speed-button">Play faster</div>
  </a>
</div>

感谢所有帮助!谢谢!

您正在寻找事件 preventDefault() 方法,它将阻止 link 对您进行重定向。请参阅 linked post。

尝试从 <a> 标签中删除 href。这将阻止它导航到页面顶部的“#”。

我自己试过了,因为你的代码看起来不错,但谁知道呢。我所做的是,我用我的一些代码重写了你的代码并且它有效。检查 jsFiddle

https://jsfiddle.net/somdow/16h8go17/

这里是一个示例代码 link(在 JS 中)

$('#link1').on("click", function(evt){
        evt.preventDefault();
        alert("lopan");     

        if (currentSpeed < 1.50) {
        currentSpeed = currentSpeed + 0.05;
        hapyak.playlist.get()._player.playbackRate(currentSpeed);
        updateSpeed();
        }

});

这里是 HTML 的示例代码:

<div class="linkW">
  <div id="link1"><a href="#">Play slower</a></div>
  <div id="link2"><a href="#">Normal speed</a></div>
  <div id="link3"><a href="#">Play faster</a></div>
</div>

PS。我添加了很多 loremIpsum 文本以确保它不会跳起来,我还在我的函数中添加了你的 JS 以确保它不会抛出错误并且它仍然有效。我还添加了一个随机 "alert" 以确保它被触发并且页面不会跳转并且它也有效。

这就是说,id 只需重写您的 links 并使它们像我的示例一样,它应该可以工作。我只是这样添加它,因为我喜欢让所有 JS 离开页面。

祝你好运。