2008-11-06 3 views
0

У меня есть две html-страницы, когда вы нажимаете на что-то на первом html, он перейдет ко второму. Я хочу показать текст в соответствии с тем, что вы нажали на первый html. разные тексты обернуты разными идентификаторами. Вот как я писал:JavaScript anchor-access to id на другой HTML-странице

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

Я ожидал увидеть two.html загрузить текст с идентификатором «один», но он не работает, кто-нибудь знает, что я сделал не так?

Вот код на второй странице:

<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 файл, чтобы изменить каждый идентификатор:

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

То же для двух и трех.

Прямо сейчас, если я нажму на кнопку на первой странице, она всегда будет показывать текст и рис. «Один», независимо от того, какую кнопку я нажимаю.

Но я хочу увидеть рис и текст для «двух», если я нажму на него.

+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-событие в окно. Элемент Fetch с id = one (с jQuery это будет «#one», то же самое, что и ваше location.hash было бы очень удобно в этом случае), вызвать щелчок по нему.

Возможно, вам потребуется заменить $ (location.hash) .click(); с $ (location.hash) .get (0) .click(), поскольку jQuery имеет тенденцию возвращать массивы jQuery-объектов.

Но лучшим решением в вашем случае было бы иметь обработчик событий, который вы можете запускать вручную, таким образом, обходя необходимость в событиях обжига, а также отбрасывать якоря и накладывать onclick прямо на ваши лики.

И, кроме того, почему вы загружаете вторую страницу, когда все, что вы хотите сделать, это динамически отображать/скрывать контент? Сделайте это на той же странице ...

0

Когда вы говорите «разные идентификаторы», как вы устанавливаете свои якоря на 2-й странице? Якорь на 2-й странице должна выглядеть следующим образом:

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

Put это прямо над текстом, который вы хотите пометить на 2-й странице.

1

#blastuffbla - это не идентификатор, а местоположение. Вы можете Acces его с помощью:

self.document.location.hash 

, который будет возвращать #hash, если вы хотите только хеша вы бы использовать:

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

Надеется, что это помогает

0

Хотят прокрутки страница к положению идентификатора «один»? Возможно, содержимое страницы слишком мало, что вы не можете прокручивать ее. Я имею ввиду, что иногда браузер не может перемещать элемент, помеченный id, в верхнюю часть холста и выглядит так, как будто он прокручивается там. Попытайтесь включить достаточное пространство после элемента, чтобы сделать его прокручиваемым в верхней части браузера.

Надеюсь, что это поможет.

1

теги не имеют идентификаторов, но имена для обработки якорей в URL-адресах, вам все равно потребуется идентификатор для управления ими в 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 казалось правильным, хотя.

Смежные вопросы