JavaScript锚点-访问另一个HTML页面上的id

JavaScript anchor- access to id on another HTML page

本文关键字:id HTML 锚点 访问 另一个 JavaScript      更新时间:2023-09-26

我有两个html页面,当你点击第一个html上的某个东西时,它会转到第二个。我想做的是根据你点击的第一个html来显示文本。不同的文本用不同的id包装。我是这样写的:

<a href="secondpage.html#one"></a>
<a href="secondpage.html#two"></a>
<a href="secondpage.html#three"></a>

我希望看到two.html加载id为"one"的文本,但它不起作用,有人知道我做错了什么吗?

这是第二页的代码:

<ul id="menu" class="aaa">
    <li><a id="one" href="#">one</a></li>
    <li><a id="two" href="#">two</a></li>
    <li><a id="three" href="#">three</a></li>
</ul>

我有一个JS文件来修改每个id:

$("one").observe('click', function() {
    $('Pic').writeAttribute('src',"picone.jpg");
    $('Bio').update("texthere!");
});

二人和三人也是如此。

现在,如果我点击第一页上的按钮,它将始终显示"一"的文本和图片,无论我点击哪个按钮。

但如果我点击它,我想看到"两个"的图片和文本。

您想要做的是在页面加载时模拟点击锚点。由于您使用的是jQuery,因此最简单的方法(但形式最好)如下:

$(window).oserve('domready',function(){$(location.hash).click();});

将ondomready事件附加到窗口。获取id=1的元素(使用jQuery,这将是"#one",与您的位置相同。在这种情况下,hash将非常方便),触发点击。

您可能需要替换$(location.hash).click();使用$(location.hash).get(0).click(),因为jQuery倾向于返回jQuery对象的数组。

但在您的情况下,一个更好的解决方案是拥有一个可以手动触发的事件处理程序,从而避免触发事件的需要,也可以放下锚点并直接在li上单击onclick。

此外,当您似乎只想动态显示/隐藏内容时,为什么要加载第二个页面?在同一页上做。。。

#blastuffbla不是ID,而是位置散列。您可以使用访问它

self.document.location.hash

它将返回#hash,如果你只想使用哈希:

self.document.location.hash.substring(1)

希望这能帮助

标签没有id,但有名称来处理Url中的锚,不过您仍然需要id来在JS中管理它们。所以你的清单应该是:

<ul id="menu" class="aaa">
<li><a id="one" name="one" href="#">one</a></li>
<li><a id="two" name="two" href="#">two</a></li>
<li><a id="three" name="three" href="#">three</a></li></ul>

不过,您的javascript似乎是正确的。

当你说"不同的id"时,你是如何在第二页设置锚的?第二页上的锚应该是这样的:

<a name='one'></a>

把这个放在你想在第二页上标记的文本的正上方。

是否要将页面滚动到id"one"的位置?也许页面的内容太小,你无法滚动到那里。我的意思是,有时浏览器无法将标记有id的元素移动到画布的顶部,看起来它没有滚动到那里。尝试在元素后面包含足够的空间,使其可以滚动到浏览器顶部。

希望能有所帮助。