2008-11-06 59 views
0

我有两个html页面,当你点击第一个html上的内容时,它会转到第二个html页面。我想要做的是根据你点击第一个html显示文本。不同的文本用不同的ID包装。我是这样写的:JavaScript锚 - 在另一个HTML页面上访问id

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

我期待看到two.html加载ID为“一”的文本,但它不工作,没有人知道我做错了什么?

这里的第二页上的代码:

<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!"); 
}); 

同为第二和第三。

现在,如果我点击第一页上的按钮,它总是会显示 “one”的文字和图片,无论我点击哪个按钮。

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

+0

听起来像你正在寻找的不仅仅是一个简单的答案 - 似乎你需要学习更多关于HTML,JavaScript等。 – 2008-11-06 17:45:26

+0

@christine:也许你可以编辑你的问题,并包括[更多]更多你的代码? – Pistos 2008-11-06 18:25:56

回答

2

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

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

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

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

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

此外,为什么当你想要做的只是动态地显示/隐藏内容时,加载第二个页面?在同一页面上做...

0

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

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

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

1

#blastuffbla不是ID,而是位置散列。 您可以使用它存取权限:

self.document.location.hash 

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

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

希望这有助于

0

你要滚动该页面的ID为“一”的位置?也许该页面的内容太小,你不能在那里滚动。我的意思是,有时浏览器不能将标记为id的元素移动到画布的顶部,看起来像是在那里滚动。尝试在元素之后包含足够的空间以使其可滚动到浏览器的顶部。

希望有所帮助。

1

标签没有标识符的名称来处理Url中的锚点,但仍然需要在ID中管理它们。 所以你的名单应该是:

<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似乎正确。

相关问题