滚动页面单击按钮以链接到同一页面

Posted

技术标签:

【中文标题】滚动页面单击按钮以链接到同一页面【英文标题】:Scroll page onClick of button to link on the same page 【发布时间】:2016-03-07 15:00:29 【问题描述】:

这是我的代码,它没有显示任何错误,但也不要转到href 位置。 当我将 href 更改为“www.google.com”时,代码有效。为什么它不适用于同一页面链接?

<form>
<a href="#DivIdToScroll">
   <div id="btnLink" onClick="generateReport();"> Generate </div>
</a>
</form>

<script>
function generateReport()

    window.location.href = '#DivIdToScroll';

</script>

【问题讨论】:

确保 DivIdToScroll 是一个 id 而不是一个类。 jQuery scroll to element的可能重复 【参考方案1】:

我根据您提供的代码准备了一个代码 sn-p。我刚刚制作了一个长容器,并在下部插入了一个 ID 为“DivIdToScroll”的 div。它似乎工作正常。您可能使用了类而不是 Id。希望对您有所帮助。

 function generateReport() 
   window.location.href = '#DivIdToScroll';
 
.longContainer 
  height: 1000px;
  background: #eee;

.justTakingSpace 
  height: 600px;
  margin: 2px;
  background: #ddd;
<div class="longContainer">
  <form>
    <a href="#DivIdToScroll">
      <div id="btnLink" onClick="generateReport();">Generate</div>
    </a>
  </form>

  <div class="justTakingSpace"></div>

  <div id="DivIdToScroll">Oh you're here at "#DivIdToScroll". hello hello.</div>
</div>

【讨论】:

感谢现在的工作。在我添加 window.location.href = '#DivIdToScroll'; 之前,div 被隐藏了在功能上。这就是原因。当我把它放在功能结束时,它工作得很好。【参考方案2】:

你可以试试这组代码,它也有动画。

<div id="DivIdToScroll">Go to link</div>

这里是jquery代码

$("#DivIdToScroll").click(function()

$('html, body').animate(
        scrollTop: $("#scroll_div").offset().top
    , 1000);
);

这是内容 div

<div id="scroll_div">Content</div>

【讨论】:

【参考方案3】:

没有动画

function generateReport() 
  window.location.href = '#DivIdToScroll';
<form>

  <a href="#DivIdToScroll">
    <div id="btnLink" onClick="generateReport();"> Generate </div>
  </a>

  <div style="height:500px">&nbsp;</div>

  <div id="DivIdToScroll">Go to link</div>

  <div style="height:500px">&nbsp;</div>
  
</form>

带动画

function generateReport() 
  $('html, body').animate(
    scrollTop: $("#DivIdToScroll").offset().top
  , 1000);
;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form>

  <a href="#DivIdToScroll">
    <div id="btnLink" onClick="generateReport();"> Generate </div>
  </a>

  <div style="height:500px">&nbsp;</div>

  <div id="DivIdToScroll">Go to link</div>

  <div style="height:500px">&nbsp;</div>

</form>

【讨论】:

以上是关于滚动页面单击按钮以链接到同一页面的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮时如何使HTML页面一直向上滚动? [复制]

单击按钮时如何使HTML页面一直向上滚动? [复制]

滚动动画会破坏页面上的链接

单击后退按钮但不离开页面时防止自动滚动?

如何创建一个HTML按钮,其作用类似于同一页面上项目的链接?

单击 Blazor 中的顶部导航链接时滚动到页面的指定部分