1

我是 ASP、JS、HTML5 的菜鸟。我正在编写一个由 ASP.net 驱动并具有 Prev 和 Next 按钮的快速内部网站。每次用户按下 Next 按钮时,都需要滚动到下一个书签。但是,在我看来,页面每次都从服务器刷新。

在不刷新的情况下创建指向同一页面的 JavaScript 链接最直接的方法是什么?目前我有 id 像'#1'这样的跨度,我正在使用

button onclick="JavaScript:window.location.hash = '#1'

我尝试了很多变化,但似乎都没有。

请注意:我只是想导航到同一页面上的书签。没有数据需要去服务器,页面也不需要以任何方式改变。

(编辑:将代码中的“替换”更改为“哈希”,因为这会引起混淆)。

4

4 回答 4

3

不要使用window.location.replace,而是尝试简单地分配给window.locationorwindow.location.hrefwindow.location.hash

恐怕其他回答者要么不理解问题,要么不理解问题。当然,您可以跳转到由 ID 标识的页面上的某个位置,而无需重新加载它。这是浏览器如何工作的基础。这是 window.location.reload 函数存在的原因之一,因此如果需要,您可以重新加载它。您也不限于使用 href 导航到 ID;当然你可以用 window.location 来做(只是不能用 window.location.replace)。

更新:您尝试做的事情没有任何问题,并且页面不应该重新加载。您的页面中一定有其他东西导致了这种行为,尽管我无法想象它可能是什么。尝试一个真正简单的测试用例,然后从那里开始。

于 2013-02-12T01:53:04.043 回答
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>

这些行中有一些东西......

于 2013-02-12T01:44:01.897 回答
1

事实证明,我的按钮在一个表单中。除了使用window.location.hash='#1',按钮类型必须设置为按钮。如果未明确设置按钮类型,则默认情况下会提交,这就是导致页面刷新的原因。否则,按钮可能不应该在表单中。

<button type='button' onclick="JavaScript:window.location.hash = '#1'">导航不刷新
</按钮>
于 2013-02-12T03:10:31.670 回答
0

您可能希望查看JQuery Ajax,它可以为您提供您正在寻找的行为,即无需刷新页面,执行一些涉及与服务器通信并获取响应的操作。

于 2013-02-12T01:40:06.947 回答