JavaScript acesso anchor para id em outra página HTML
-
06-07-2019 - |
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.
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.