Frage

ich zwei HTML-Seiten habe, wenn Sie auf etwas auf dem ersten html klicken, um es in den zweiten gehen. Was ich tun möchte, ist ein Text zu zeigen, nach dem, was Sie auf dem ersten html geklickt. verschiedene Texte mit unterschiedlichen ids gewickelt. Hier ist, wie ich schrieb:

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

Ich erwarte, um zu sehen two.html den Text mit der ID „einem“ zu laden, aber es funktioniert nicht, weiß jemand, was ich falsch gemacht habe?

Hier ist der Code auf der zweiten Seite:

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

Und ich habe eine JS-Datei jede ID zu ändern:

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

Das Gleiche gilt für zwei und drei.

Im Moment, wenn ich auf der ersten Seite auf einer Schaltfläche klicken, wird es immer zeigen der Text und Bild für „one“, unabhängig davon, welche Taste ich auf.

Aber ich will das Bild und Text für „zwei“, um zu sehen, ob ich darauf klicken.

War es hilfreich?

Lösung

Was möchten Sie tun, ist ein Klick auf Ihre Anker simulieren, wenn die Seite geladen wird. Da Sie mit jQuery, die einfachste Methode (aber am besten weit Form) folgendes wäre:

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

anhängen ondomready-Ereignis-Fenster. Fetch Element mit id = ein (mit jQuery dies würde ‚#ONE‘, gleich wie Ihr location.hash sein würde, sehr praktisch in diesem Fall), lösen einen Klick auf sie.

Unter Umständen müssen Sie $ (location.hash) .click () ersetzen; mit $ (location.hash) .get (0) .click (), da jQuery neigen Arrays von jQuery-Objekte zurückzukehren.

Aber eine bessere Lösung in Ihrem Fall wäre ein Event-Handler, die Sie manuell auslösen können, wodurch die Notwendigkeit von Feuerungsereignisse umgehen, aswell als die Anker fallen und Onclick direkt auf Ihrem li setzen.

Und außerdem, warum laden Sie eine zweite Seite, wenn alles, was Sie tun zu wollen, scheinen dynamisch zeigen / verstecken Inhalt? Machen Sie es auf der gleichen Seite ...

Andere Tipps

die #blastuffbla ist keine ID, aber die Lage Hash. Sie können es acces durch die Verwendung:

self.document.location.hash

, welche #hash zurückkehren würde, wenn Sie Hash möchte verwenden Sie:

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

Hope, das hilft

-Tags haben keine ids aber Namen, die Anker in Urls zu handhaben, werden Sie müssen noch die ID obwohl sie in JS verwalten. So sollte Ihre Liste sein:

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

Ihr Javascript schien richtig though.

Wenn Sie sagen, „verschiedene IDs“, wie setzen Sie Ihre Anker auf der zweiten Seite nach oben? Der Anker auf der zweiten Seite soll wie folgt aussehen:

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

Setzen Sie diese direkt über dem Text, den Sie auf der zweiten Seite markieren möchten.

Haben Sie die Seite an den positon der id „ein“ blättern wollen? Vielleicht ist der Inhalt der Seite zu klein, dass Sie dort bewegen kippen. Ich meine, manchmal kann nicht der Browser das Element bewegen mit der ID an die Spitze der Leinwand markiert und sieht aus wie es dort gescrollt doenst. Versuchen Sie, genügend Platz hinter dem Element enthalten, um es an die Spitze des Browsers scrollbaren zu machen.

Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top