kostenloser Webspace werbefrei: lima-city


2 befehle mit einem Klick

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    andersen

    Kostenloser Webspace von andersen

    andersen hat kostenlosen Webspace.

    Guten Tag liebe Lima-City Community!
    Nach langer abwesenheit melde ich mich gleich mal mit einem Problemchen zurück und zwar folgendes:

    (Quelltext folgt)
    Immer wenn ich den Button klicke passiert es das der Text ein/aus klappt - jedoch springt er immer nur bei jedem 2. Klick zu der gewünschten Position (window.location.href)
    Außerdem finde ich die jetzige Lösung das mit in die function zu schreiben sehr dürftig... allerdings akzeptiert Mozilla bei mir es nicht wenn ich window... mit als Teil der Funktion setze. Mal springt er dann auch nur bei jedem 2. Klick, mal geht dann garnichts mehr. Ich muss gestehen ich bin übermüdet und vermute deshalb einen minimalen Tippfehler oder ähnliches.

    <html>
    <head>
    <script lang="text/javascript">
    /*
    Diese function hab ich von wem kopiert und nur das window.location.href hinzugefügt
    Hab auch bereits das window vor und hinter die restliche Funktion gepackt - selber Erfolg
    nur bei jedem 2 Klick auf den Button sprang die Posi um ODER es geschah garnichts.
    */
    function toggle(control)
    	{		
    		var elem = document.getElementById(control);
    		if(elem.style.display == "none")
    			{
    				elem.style.display = "block";
    				window.location.href = '#'+control;
    			}
    		else
    			{
    				elem.style.display = "none";
    				window.location.href = '#'+control;
    			}
    	}
    </script>
    </head>
    
    
    <body>
    <a name="1">1</a>
    <div id="1">
    TEXT!!!!
    </div>
    
    <form name="LinkGenerator" action="">
    <input type="text" size="30" name="Suchbegriff">
    <input type="button" value="Anzeigen!" onclick="toggle(this.form.Suchbegriff.value);">
    <!-- 
    Meine Alternative die ich bereitz probiert habe:
    onclick=" xxx "
    toggle(this.form.Suchbegriff.value);window.location.href(this.form.Suchbegriff.value);
    Ergebnis: wieder nur bei jedem 2. Klick
    
    -->
    </form>
    
    <!-- Einfach nur damit der Umsprung an der Scrollbar sichtbar wird -->
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <br><br><br><br><br><br><br><br><br><br><br><br><br>
    <a name="2">2</a>
    <div id="2">TEXT 2!!!!</div>
    </body>
    </html>



    Ich hoffe wir haben hier den einen oder anderen schlauen Kopf der sich die Mühe macht !
    Würde mir wirklich was bedeuten, ich bin jetzt gute 12 Stunden hinter Javascript selbscoden her und davon mehr als ein Drittel nur hinter diesem Problem...

    mfg. andersen
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Versuch doch mal dein HTML Code valid zu machen, in dem du keine Zahl als `id`, sondern eine Zeichenfolge nimmst. `id`s oder bei `<a>` das Attribut `name` dürfen nämlich nur mit einem Buchstaben beginnen.

    Hoffe, das hilft,
    Ryan

    Beitrag zuletzt geändert: 13.4.2009 20:21:18 von ryanblack
  4. Autor dieses Themas

    andersen

    Kostenloser Webspace von andersen

    andersen hat kostenlosen Webspace.

    Die Idee klingt nicht schlecht... habs sie auch ausprobiert:
    ID und Name in Wörter umgenannt (eins & zwei)
    [Da es ja keinen unterschied machen sollte hab ich das ausklappen (none/block vom style.display) außerdem vor den rest von der function toogle gesetzt... also sollte der Posi wechsel beim anklicken vor dem ausklappen können... richtig? (ware evtl. nur etwas nervig bei nem Sprung ans Ende der Seite wenn da noch kein Inhalt zu sehen ist und dieser erst beim runter scrollen wirklich sichtbar wird... das jedoch erstmal egal)]
    Das Problem bleibT bestehen, immer erst beim zweiten onclick auf den Button wechselt die Position ... der Rest mit ein/aus klappen funzt einwandfrei jedesmal.

    Hab selbst noch ne Idee weiß grade aber keine Möglichkeit diese zu realisieren.
    Wenn ich ID/Name unterschiedlich benenne wie könnte ich dann einstellen (möglichst ohne ewig lange if/else Schleifen im Javascript) das dennoch an die passende Stelle gesprungen wird bzw. der entsprechende div-Container angezeigt wird (wären ja unterschiedliche Namen)
  5. du könntest deinen Code vielleicht mal online stellen. So könnten wahrscheinlich mehr leute dir helfen. Auf den ersten Blick sehe ich auch keinen Fehler o.ä.

    hast du es schon mit verschiedenen Browsern ausprobiert?
  6. Autor dieses Themas

    andersen

    Kostenloser Webspace von andersen

    andersen hat kostenlosen Webspace.

    IE und FF (jeweils die aktuellsten) andere sind immo nicht installiert und für die Zielgruppe unwahrscheinlich ... Code steht im Eröffnungsost wenn sich daran nicht geändert hat.
  7. ich meinte mit online stellen dateien hochladen und uns den link geben ;)
  8. Ich denke mal dein grundlegendes Problem ist, dass du das Element erst ausblendest und dann hinspringst. Und zu dem was nicht da ist, kann man nicht springen. Beim zweiten Klick blendest du es wieder ein und kannst dann dort hin springen.
    Fazit:
    Befehlsreihenfolge tauschen!
    if(elem.style.display == "none")
    			{
    				window.location.href = '#'+control;
    				elem.style.display = "block";
    			}
    		else
    			{
    				window.location.href = '#'+control;
    				elem.style.display = "none";
    			}
  9. robin schrieb:
    Ich denke mal dein grundlegendes Problem ist, dass du das Element erst ausblendest und dann hinspringst. Und zu dem was nicht da ist, kann man nicht springen. Beim zweiten Klick blendest du es wieder ein und kannst dann dort hin springen.
    Fazit:
    Befehlsreihenfolge tauschen!
    Gute Idee! Jedoch muss in der `if` Anweisung die Reihenfolge vertauscht werden, weil man das Element zuerst einblenden muss, damit man dahin springen kann.

    In der `else` Anweisung muss man zuerst hinspringen, dann ausblenden.
    if(elem.style.display == "none") {
    	elem.style.display = "block";
            window.location.href = '#'+control;
    } else {
    	window.location.href = '#'+control;
    	elem.style.display = "none";
    }
    Ryan
  10. Stimmt, jetzt hatte ich doch, nach dem ich den Fehler entdeckte, glatt selber selbigen begangen, indem ich in beiden Blöcken getauscht hab.
    Naja - war gestern ein langer Arbeitstag :angel:

    Beitrag zuletzt geändert: 17.4.2009 18:48:08 von robin
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!