muffinmaker: mit Javascript id auslesen und Parameter an Link anhängen

Hallo zusammen,
ich habe ein Problem mit der Übergabe von Parametern, die ich an einen Link anhänge und dann später mit JavaScript wieder auslese, um die Navigationsstruktur auf einen bestimmten Status einzustellen. Dabei soll per JavaScript die Id des aufrufenden Links ausgelesen werden und die ausgelesenen Werte werden dann an die URL angehängt.

Funktioniert aus alles ganz prima, nur leider nicht auf die gleiche Weise in IE(7) und Firefox(2).

zwei Varianten habe ich getestet:

1. href"#" onclick="deliver_parameter(this.id,'b_publikationen')"
2. href="javaScript:deliver_parameter(this.id,'b_publikationen')"

Der Link, der von der Funktion 'deliver_parameter' zusammengebastelt wird, sieht dann wie folgt aus:
'b_publikationen.html?de,2,1,4,4'

So wird er generiert und aufgerufen:
var ziel = link + ".html?" + lang + "," + parameter_array[0] + "," + parameter_array[1] + "," + parameter_array[2] + "," + parameter_array[3];
window.location.href=ziel;

Variante 1 funktioniert im IE völlig problemlos,
in Firefox wird alles richtig übergeben und ausgelesen, aber die Seite 'b_publikationen.html?de,2,1,4,4' wird nicht aufgerufen.

Variante 2 sollte eigentlich funktionieren, allerdings wird hier 'this.id' nicht an die Funktion übergeben. Wenn ich mit einem alert die id ausgeben lasse bekomme ich nur ein sprödes 'undefined'...

Hat jemand eine Ahnung, wie ich es hinbekomme, this.id zu übergeben,wenn die Funktion im href aufgerufen wird? ODER wie ich Variante 1 im Firefox zum Laufen bekomme?

vielen Dank schonmal,
Tobias

  1. hi,

    Der Link, der von der Funktion 'deliver_parameter' zusammengebastelt wird, sieht dann wie folgt aus:
    'b_publikationen.html?de,2,1,4,4'

    Und warum verlinkst du nicht gleich auf diese Adresse, anstatt das ganze erst per Javascript zusammenzubasteln?

    in Firefox wird alles richtig übergeben und ausgelesen, aber die Seite 'b_publikationen.html?de,2,1,4,4' wird nicht aufgerufen.

    Dann schau in die Fehlerkonsole.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. vielen dank für die schnelle Antwort!

      hi,

      Der Link, der von der Funktion 'deliver_parameter' zusammengebastelt wird, sieht dann wie folgt aus:
      'b_publikationen.html?de,2,1,4,4'

      Und warum verlinkst du nicht gleich auf diese Adresse, anstatt das ganze erst per Javascript zusammenzubasteln?

      Ich muss den Link so oder so zusammenbasteln lassen, weil ich per JavaScript die aktuelle Spracheinstellungen auslese (de oder en) damit auf der Folgseite gleich die richtige Sprache voreingestellt wird.

      in Firefox wird alles richtig übergeben und ausgelesen, aber die Seite 'b_publikationen.html?de,2,1,4,4' wird nicht aufgerufen.

      Dann schau in die Fehlerkonsole.

      Das habe ich natürlich gemacht. Habe auch Firebug installiert (großartiges Tool btw) aber offenbar liegt kein Fehler vor. 'this.id' wird in FF einfach nicht übergeben, wenn ich die Funktion im href aufrufe... Warum werden Funktionsaufrufe im href und per onclick verschieden behandelt? Irgendeine Idee?

      gruß,
      wahsaga

      1. hi,

        in Firefox wird alles richtig übergeben und ausgelesen, aber die Seite 'b_publikationen.html?de,2,1,4,4' wird nicht aufgerufen.

        Dann schau in die Fehlerkonsole.
        Das habe ich natürlich gemacht. Habe auch Firebug installiert (großartiges Tool btw) aber offenbar liegt kein Fehler vor. 'this.id' wird in FF einfach nicht übergeben, wenn ich die Funktion im href aufrufe...

        Es ging nicht um die ID, sondern um "wird nicht aufgerufen".

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. in Firefox wird alles richtig übergeben und ausgelesen, aber die Seite 'b_publikationen.html?de,2,1,4,4' wird nicht aufgerufen.

          Dann schau in die Fehlerkonsole.
          Das habe ich natürlich gemacht. Habe auch Firebug installiert (großartiges Tool btw) aber offenbar liegt kein Fehler vor. 'this.id' wird in FF einfach nicht übergeben, wenn ich die Funktion im href aufrufe...

          Es ging nicht um die ID, sondern um "wird nicht aufgerufen".

          klar, hab wohl schon einen Knoten im Hirn... ;) Auch das habe ich in Firebug getestet und es wird kein Fehler angezeigt. Es wird lediglich die aufrufende Seite (index.html) neu geladen. Ich vermute mal wegen dem href="#" vor dem onclick. Muss man da vielleicht anstelle des # etwas anderes reinschreiben, damit der JS Verweis funktioniert?

          Gruß,
          Tobias

          1. Hi,

            klar, hab wohl schon einen Knoten im Hirn... ;) Auch das habe ich in Firebug getestet und es wird kein Fehler angezeigt. Es wird lediglich die aufrufende Seite (index.html) neu geladen. Ich vermute mal wegen dem href="#" vor dem onclick. Muss man da vielleicht anstelle des # etwas anderes reinschreiben, damit der JS Verweis funktioniert?

            wenn Du auf keine Ressource verweisen willst, darfst Du kein Link-Element verwenden. Willst Du auf eine Ressource verweisen, musst Du eine URL angeben. That's it.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
          2. Hi,

            Es wird lediglich die aufrufende Seite (index.html) neu geladen. Ich vermute mal wegen dem href="#" vor dem onclick. Muss man da vielleicht anstelle des # etwas anderes reinschreiben, damit der JS Verweis funktioniert?

            Du musst dafuer sorgen, dass dem href nicht gefolgt wird.
            Das erreichst du, wenn der onclick-event false zurueckgibt.

            Beispiel:
            <a href="#" onclick="deliver_parameter(this.id,'b_publikationen');return false" ...

            mfG,
            steckl

            1. Du musst dafuer sorgen, dass dem href nicht gefolgt wird.
              Das erreichst du, wenn der onclick-event false zurueckgibt.

              Beispiel:
              <a href="#" onclick="deliver_parameter(this.id,'b_publikationen');return false" ...

              Jaa!! Das ist es, jetzt funktioniert's auch mit dem Firefox.

              War es also wieder mal ein Bug im IE, der dazu geführt hat, dass die falschen Anweisungen 'richtig' ausgeführt wurden...

              vielen Dank steckl

              Gruß,
              Tobias

      2. Hi,

        Ich muss den Link so oder so zusammenbasteln lassen, weil ich per JavaScript die aktuelle Spracheinstellungen auslese (de oder en)

        woher liest Du die denn aus?

        Das habe ich natürlich gemacht. Habe auch Firebug installiert (großartiges Tool btw) aber offenbar liegt kein Fehler vor. 'this.id' wird in FF einfach nicht übergeben, wenn ich die Funktion im href aufrufe...

        Dann wird Dein window-Objekt eben keine id-Eigenschaft besitzen.

        Warum werden Funktionsaufrufe im href und per onclick verschieden behandelt?

        Weil sie in einem völlig unterschiedlichen Kontext agieren. Das eine ist ein Event, das andere eine URL.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          Ich muss den Link so oder so zusammenbasteln lassen, weil ich per JavaScript die aktuelle Spracheinstellungen auslese (de oder en)

          woher liest Du die denn aus?

          die sind dem body zugewiesen: <body class=de> und können per script geändert werden

          »»'this.id' wird in FF einfach nicht übergeben, wenn ich die Funktion im href aufrufe...

          Dann wird Dein window-Objekt eben keine id-Eigenschaft besitzen.

          D.h. dass 'this.id' im href aufgerufen, die ID des window-Objekts anspricht und wenn ich die Funktion per onclick-Event aufrufe, dann gibt mir 'this.id' die ID des Ankers in dem das Event steht?
          Ich verstehe zwar nicht warum, aber das würde es natürlich erklären. Gibt es dann eine Möglichkeit, die ID des Ankers zu übergeben, wenn ich die Funktion im href aufrufe?

          <a id="nl_2_1_4_2" href="javaScript:deliver_parameter (this.id, 'b_biographie')">  -> 'this.id' soll 'nl_2_1_4_2' übergeben.

          Tobias

          ...sollte ich mir nochmal das DOM unters Kopfkissen legen?

          1. Hi,

            woher liest Du die denn aus?
            die sind dem body zugewiesen: <body class=de> und können per script geändert werden

            ah so, danke.

            D.h. dass 'this.id' im href aufgerufen, die ID des window-Objekts anspricht

            Der Kontext einer aufgerufenen URL ist global. Etwas Globaleres als das window-Objekt existiert innerhalb einer Seite nicht, also muss sich 'this' auf das window-Objekt beziehen.

            und wenn ich die Funktion per onclick-Event aufrufe, dann gibt mir 'this.id' die ID des Ankers in dem das Event steht?

            Richtig. Der Kontext eines Event-Handlers ist das Objekt, dem er zugeordnet ist.

            Gibt es dann eine Möglichkeit, die ID des Ankers zu übergeben, wenn ich die Funktion im href aufrufe?

            Wenn Du keine statische URL angeben kannst, willst Du offenbar auf keine Ressource verlinken. Ein Link-Element kann somit nicht existieren, ergo ist der Fall "Funktion wird in href aufgerufen" nicht gegeben. Deine Frage stellt sich nicht.

            ...sollte ich mir nochmal das DOM unters Kopfkissen legen?

            Nein, aber darüber hängen - an die Decke. Licht anlassen, Brille aufsetzen, Ventilator zum Umblättern anschalten - _das_ hilft ;-)

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. ...sollte ich mir nochmal das DOM unters Kopfkissen legen?

              Nein, aber darüber hängen - an die Decke. Licht anlassen, Brille aufsetzen, Ventilator zum Umblättern anschalten - _das_ hilft ;-)

              Werde Dich ab heute 'Peter Lustig' nennen... :))

              1. Hi,

                Werde Dich ab heute 'Peter Lustig' nennen... :))

                wenn Du das machst, musst Du Deinen Namen bald in "muffensausen" ändern, das versprech ich Dir ;-)

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes