Pergunta

Eu tenho duas páginas html, quando você clicar em algo no primeiro html, ele irá para o segundo. O que eu quero fazer é mostrar texto de acordo com o que você clicou no primeiro html. diferentes textos são envolvidos com diferentes ids. Aqui está como eu escreveu:

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

Estou esperando para ver two.html carregar o texto com o id "um", mas ele não funciona, alguém sabe o que eu fiz de errado?

Aqui está o código na segunda página:

<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>

E eu tenho um arquivo JS para modificar cada id:

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

Mesmo para dois e três.

Agora, se eu clicar em um botão na primeira página, ele irá mostrar sempre o texto e pic para "um", não importa qual botão clico.

Mas eu quero ver a foto eo texto para "dois" se eu clicar sobre ele.

Foi útil?

Solução

O que você quer fazer é simular um clique no seu âncora quando a página é carregada. Desde que você está usando jQuery, a abordagem mais simples (mas longe formar melhor) seria o seguinte:

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

anexar ondomready-evento para a janela. Fetch elemento com id = um (com jQuery isso seria '#one', mesmo que o seu location.hash seria, muito útil neste caso), acionar um clique sobre ele.

Você pode precisar substituir $ (location.hash) .click (); com $ (location.hash) .get (0) .click () desde jQuery tendem a retornar matrizes de jQuery-objetos.

Mas uma solução melhor no seu caso seria ter um manipulador de eventos que você pode disparar manualmente, assim, contornar a necessidade de ignições, aswell como soltar as âncoras e colocar onclick diretamente no seu li do. ??

E, além disso, por que você carregar uma segunda página quando tudo que você parece querer fazer é para exibir / ocultar o conteúdo de forma dinâmica? Fazê-lo na mesma página ...

Outras dicas

o #blastuffbla não é um ID, mas o hash localização. Você pode acces-lo usando:

self.document.location.hash

que retornaria #hash, se você só gostaria de hash você usaria:

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

Espero que isso ajude

marcas não têm id mas os nomes para lidar com as âncoras em URLs, você ainda vai precisar do ID para gerenciá-los em JS embora. Assim, sua lista deve ser:

<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>

Seu javascript parecia embora correto.

Quando você diz "diferentes ids" Como você está a criação de suas âncoras no 2º página? A âncora na 2ª página deve ficar assim:

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

Coloque este direito acima do texto que deseja marca na 2ª página.

Você quer rolar a página para a Posição do id "one"? Talvez o conteúdo da página é muito pequeno que você não pode rolar lá. Quero dizer, por vezes, o navegador não pode mover o elemento marcado com o ID para o topo da tela e parece que doenst rolado lá. Tente incluir espaço suficiente após o elemento para torná-lo de rolagem para a parte superior do navegador.

Espero que ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top