0

我有两个 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!");
});

二三也一样。

现在,如果我单击第一页上的按钮,无论我单击哪个按钮,它都会始终显示“一个”的文本和图片。

但是如果我点击它,我想看到“两个”的图片和文字。

4

5 回答 5

2

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

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

将 ondomready-event 附加到窗口。获取 id=one 的元素(使用 jQuery,这将是 '#one',与您的 location.hash 相同,在这种情况下非常方便),触发点击它。

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

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

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

于 2008-11-06T17:53:02.757 回答
1

#blastuffbla 不是 ID,而是位置哈希。您可以使用以下方式访问它:

self.document.location.hash

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

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

希望这可以帮助

于 2008-11-06T17:47:45.713 回答
1

标签没有 id 而是名称来处理 Urls 中的锚点,但您仍然需要 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 似乎是正确的。

于 2008-11-06T19:21:49.377 回答
0

当您说“不同的 ID”时,您是如何在第二页设置锚点的?第 2 页的锚点应如下所示:

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

将其放在第二页上要标记的文本的正上方。

于 2008-11-06T17:46:08.947 回答
0

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

希望有帮助。

于 2008-11-06T17:49:37.317 回答