susi: wie bekomm ich die id des elments?

hallo zusammen ...

ich bau gerade ein script welches in einem anchor auffgerufen wird!

<a id="something" href="javascript:loadContent('something', this.id);">blabla</a>

nun bekomm ich jedoch mit this.is nicht die id dieses elments! warum?
sollte this nicht jenes element repräsentieren?

wie kann ich es sonst machen?

leider kann ich onclick nciht verwenden da auch dieser verweis in JS generiert wird!

bsp:

anchors[i].setAttribute("href", "javascript:loadContent('"+temp_a+"', this.id);");

dies mach ich aus dem grunde da der IE kein

anchors[i].setAttribute("onClick", "loadContent('"+temp_a+"', this.id);");

dynamisches generieren von eventhandler zulässt!

im FF funkt bsp2: wunderbar auch mit id und allem jedoch führt der IE nichts aus worauf ich zu bsp1 zurück kehren musste!

also ....

wie bekomm ich mit

<a id="something" href="javascript:loadContent('xxx', this.id);">blabla</a>

die id "something" des jeweiligen elements raus?

kuss susi ...

  1. Hi,

    <a id="something" href="javascript:loadContent('something', this.id);">blabla</a>
    nun bekomm ich jedoch mit this.is nicht die id dieses elments! warum?

    ich vermute, weil der Kontext nicht mehr das Element ist, sondern eine URL. Es ist nun mal nicht empfehlenswert, JavaScript-Code im href-Attribut eines Links unterzubringen.

    leider kann ich onclick nciht verwenden da auch dieser verweis in JS generiert wird!

    Die onclick-Eigenschaft eines Elements existiert.

    anchors[i].setAttribute("onClick", "loadContent('"+temp_a+"', this.id);");

    Denke jenseits von HTML. Die Welt ist case-sensitive. Schon in XHTML ist "onClick" nicht mehr gültig.

    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. danke für den hinweis, jedoch sah ich den wald vor lauter bäumen nicht!
      da ich ja bereits in javascript bin kann ich ja einfach die id hier übergeben!

      anchors[i].setAttribute("href", "javascript:loadContent('"+temp_a+"', '"+anchors[i].id+"');");

      stupid me, hihi!

      1. Hi,

        da ich ja bereits in javascript bin kann ich ja einfach die id hier übergeben!

        das kannst Du bei einer anonymen Funktion oder von mir aus einem Function()-Objekt auch. Es besteht kein Grund, ein HTML-Attribut zu setzen, schon gar nicht das href-Attribut. Beachte auch den geringfügig weiter unten geführten Thread zum quasi selben Thema.

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

          Beachte auch den geringfügig weiter unten geführten Thread zum quasi selben Thema.

          Beachte du bitte auch, dass solche Richtungs- und Entfernungsangaben in der Default-Sortierung des Forums, in der stärker antwortenderweise frequentierte Threads länger "oben" verbleiben, andere dagegen "absinken", ziemlich wenig Wert haben - und später, wenn der Thread archiviert ist, schon mal gar keinen mehr.
          Ein hübscher kleiner Link auf den Thread, auf den du dich beziehst, wäre schön für alle Mitlesenden.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hallo,

    <a id="something" href="javascript:loadContent('something', this.id);">blabla</a>

    habs nicht getestet, aber probiere es mit this statt this.id

    Dann frage einfach in deiner Funktion den Wert des id-Attributes ab

    Also so:

      
    loadContent(x,y) {  
       meineVariable = y.[link:http://de.selfhtml.org/javascript/objekte/node.htm#get_attribute_node@title=getAttributeNode]("id");  
    }  
    
    

    Aufruf:

      
    <a id="something" href="javascript:loadContent('something', this);">blabla</a>  
    
    

    Gruß, Nils

    1. Hallo,

      und wenn das nicht funktioniert, hat Cheatah mit seinem Posting recht, this wird nicht als Objekt, sondern als Zeichenkette interpretiert.

      In diesem Fall sollte es folgender Aufruf tun:

        
      <a id="something" href="#" onclick="loadContent('something', this.id);">blabla</a>  
      
      

      Gruß, Nils

    2. Hallo,

      Neiiiinnn, falsch,
      In diesem Fall sollte es FOLGENDER Aufruf tun:

        
      <a id="something" href="#" onclick="loadContent('something', this);">blabla</a>  
      
      

      Gruß, Nils

  3. Hallo,

    <a id="something" href="javascript:loadContent('something', this.id);">blabla</a>

    nun bekomm ich jedoch mit this.is nicht die id dieses elments! warum?
    sollte this nicht jenes element repräsentieren?

    Nein.

    Wie Cheatah sagt, wird der Code nicht im Kontext des a-Elements ausgeführt und this zeigt daher auch nicht auf das Anker-Elementobjekt.

    leider kann ich onclick nciht verwenden da auch dieser verweis in JS generiert wird!

    Kein Problem.

    dies mach ich aus dem grunde da der IE kein

    anchors[i].setAttribute("onClick", "loadContent('"+temp_a+"', this.id);");

    dynamisches generieren von eventhandler zulässt!

    Stimmt, du kannst das aber auch anders notieren. Am besten speicherst du in so einem Fall die gewünschten Informationen als eigene, neue Eigenschaften am jeweiligen Element. (Dafür plädiere ich jedenfalls - ich finde Lösungen wie die von nils vorgestellte nicht so elegant.)

    In deiner Schleife:
    anchors[i].eigenschaft = variable;
    (Zum Beispiel was bei dir temp_a war)

    Dann als Handler einfach:

    function handler (eventobjekt) {
       alert(this.id); // Falls du die ID brauchst
       alert(this.variable); // Hier hast du dann Zugriff auf die jeweilige Variable
    }

    Vorteile:

    • Du brauchst keine ID, um das Element anzusprechen, du sprichst es über this an. Aber du kannst auch auf die ID zugreifen, falls sie einen darüber hinaus gehenden Zweck hat.
    • Du brauchst keinen Event-Handler dynamisch generieren. Es gibt eine Handlerfunktion, die sich die Infos vom Element holt.
    • Das href-Attribut kannst du sinnvoll füllen, sodass der Link auch funktioniert, wenn JavaScript nicht aktiviert/verfügbar ist. Wenn du nicht willst, dass beim Klicken auf den Link auf noch diese href-Adresse angesprungen wird, kannst du return false; an das Ende der Handler-Funktion schreiben (das unterbindet die Standard-Behandlung des click-Ereignisses).

    Mathias

    --
    »No nations, no borders.«
    SELFHTML Weblog
  4. Hallo,

    Meine Antwort im benachbarten Thread passt auch zu diesem Thread.

    Mathias

    --
    »No nations, no borders.«
    SELFHTML Weblog