我是ASP,JS,HTML5的菜鸟。我正在写一个由ASP.net驱动的快速内部网站,它有Prev和Next按钮。每次用户按下“下一步”按钮时,下一个书签都需要滚动到。但是,在我看来,每次都会从服务器刷新页面。
在没有刷新的情况下,创建指向同一页面的JavaScript链接的最简单方法是什么?目前我的id已经超过'#1'并且我正在使用
button onclick="JavaScript:window.location.hash = '#1'
我尝试了很多变化,似乎都没有。
请注意:我只是尝试导航到同一页面上的书签。没有数据需要转到服务器,页面也不需要以任何方式改变。
(编辑:在代码中将'replace'更改为'hash',因为这会引起混淆)。
答案 0 :(得分:3)
不要使用window.location.replace
,而只需分配到window.location
或window.location.href
或window.location.hash
。
我担心其他的回答者要么不理解这个问题,要么不理解这些问题。当然,您可以跳转到ID标识的页面上的某个位置,而无需重新加载。这是浏览器工作方式的基础。这是window.location.reload函数存在的一个原因,所以如果你愿意,你可以重新加载它。您也不仅限于使用href来导航到ID;当然你可以使用window.location(只是没有window.location.replace)。
更新:您尝试做的事情没有任何问题,页面无法重新加载。您的页面中必须有其他内容导致此行为,但我无法想象它可能是什么。尝试一个真正简单的测试用例,然后从那里开始工作。
答案 1 :(得分:1)
您只需要将一些元素与id
属性和<a href>
元素链接到具有哈希值的项目:
<h3 id="section_1">Section One</h3>
<p>...</p>
<div>Prev | <a href="#section_2">Next</a></div>
<h3 id="section_2">Section Two</h3>
<p>...</p>
<div><a href="#section_1">Prev</a> | <a href="#section_3">Next</a></div>
<h3 id="section_3">Section Three</h3>
<p>...</p>
<div><a href="#section_2">Prev</a> | Next</div>
这些内容......
答案 2 :(得分:1)
事实证明我的按钮位于表格内。除了使用window.location.hash ='#1'之外,还必须将按钮 type 设置为按钮。如果未明确设置按钮类型,则默认情况下会执行提交,这是导致页面刷新的原因。否则,也许按钮不应该是一种形式。
<button type='button' onclick="JavaScript:window.location.hash = '#1'">Navigate without refresh </button>
答案 3 :(得分:0)
您可能希望查看JQuery Ajax,它可以为您提供所需的行为,即无需刷新页面,执行涉及与服务器通信并获取响应的事情。