Fredo: createElement("a")

Hey Leute,

wie kann ich das Ziel eines Links definieren, das ich mit createElement("a") erzeugt habe??

MfG Fredo

  1. wie kann ich das Ziel eines Links definieren, das ich mit createElement("a") erzeugt habe??

    mit .href

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. mit .href

      Danke

      MfG Fredo

  2. Hey Leute,

    wie kann ich das Ziel eines Links definieren, das ich mit createElement("a") erzeugt habe??

    MfG Fredo

    Ja zb durch:

      
    var a = document.createElement("a");  
    s.setAttribute("href","blabla.html";  
    
    

    Mehr ist das nicht ... Es ist auch die Methode, mitder man jeden Browser erreicht ...

    Grüße

    1. Hallo zippy.

      wie kann ich das Ziel eines Links definieren, das ich mit createElement("a") erzeugt habe??

      Ja zb durch:

      var a = document.createElement("a");
      s.setAttribute("href","blabla.html";

      
      >   
      > Mehr ist das nicht ... Es ist auch die Methode, mitder man jeden Browser erreicht ...  
        
      … außer den IE. (Gut, widerspricht deiner Aussage ja kaum.)  
        
        
      Einen schönen Mittwoch noch.  
        
      Gruß, Mathias  
      
      -- 
      ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)  
        
      debian/rules
      
      1. … außer den IE. (Gut, widerspricht deiner Aussage ja kaum.)

        Wieso, der IE hat doch nur Probleme damit das style - Attribut zu setzen. Mit href sollte es soch keine Probleme geben, zumal es kein universal - Attr. ist.

        Gtüße

        1. Hallo zippy.

          … außer den IE. (Gut, widerspricht deiner Aussage ja kaum.)

          Wieso, der IE hat doch nur Probleme damit das style - Attribut zu setzen. Mit href sollte es soch keine Probleme geben, zumal es kein universal - Attr. ist.

          Es geht nicht um das „was“, sondern das „wie“; der IE hat allgemein Probleme damit, Attributwerte per setAttribute festzulegen. Der direkte Weg ist daher hier (auch der Lesbarkeit halber) vorzuziehen.

          Einen schönen Mittwoch noch.

          Gruß, Mathias

          --
          ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
          debian/rules
  3. Kann mir noch einer sagen warum das nicht klappt?:

    for ( i = 1 ; i <= 63 ; i++ ) {

    neuesLi = document.createElement("li");
    neuerLink = document.createElement("a");
    neuerLink.setAttribute("href", "navi()");
    LinkName = document.createTextNode("Bild Nummer" + i);
    document.getElementById("bilder").appendChild(neuesLi);
    document.getElementsByTagName("li")[i].appendChild(LinkName);
    document.getElementsByTagName("a")[i].appendChild(LinkName);

    }

    meine Fehler-Konsole sagt :

    document.getElementsByTagName("li")[i] has no properties..

    aber ich hab das doch vorher schon "erschaffen" oder nicht?
    Mfg Fredo

    1. Hallo,

      for ( i = 1 ; i <= 63 ; i++ ) {

      ^^^^^^^

      neuesLi = document.createElement("li");
      neuerLink = document.createElement("a");
      neuerLink.setAttribute("href", "navi()");
      LinkName = document.createTextNode("Bild Nummer" + i);
      document.getElementById("bilder").appendChild(neuesLi);
      document.getElementsByTagName("li")[i].appendChild(LinkName);

      Das erste Element in der Liste, die getElementsByTagName zurückgibt, hat den Index 0. Du beginnst bei 1 zu zählen. Wenn du ein li-Element ins Dokument einfügst, liefert document.getElementsByTagName("li") eine Liste mit einem Element - mit dem Index 0, nicht 1.

      document.getElementsByTagName("a")[i].appendChild(LinkName);

      Du kannst einen Textknoten nicht zweimal in den DOM-Baum einhängen, sondern nur einmal.

      document.getElementsByTagName("li")[i] has no properties..

      aber ich hab das doch vorher schon "erschaffen" oder nicht?

      Siehe oben. Aber warum gehst du überhaupt Weg über getElementsByTagName? Textknoten erzeugen und anhängen kannst du auch direkt mit den Variablen neuesLi und neuerLink.

      Mathias

      1. gut aber was ist jetzt verkehrt?? ich will erst eine slideshoe machen, bei der die bilder durch clicks auf "weiter" bzw. "zurück"
        sich ändern!
        das klappte auch bis ich die liste mit den links gemacht habe..

        jetzt wird das dritte bild auf einmal ausserhalb des divs angezeigt..

        warum??

        hier der quelltext:

        <body>
        <h1> KES </h1>

        <ol id="bilder">
        </ol>                                                              <!-- es folgt ein script,der die navi aufbaut --!>
        <script type="text/javascript">

        for ( i = 1 ; i <= 63 ; i++ ) {

        neuesLi = document.createElement("li");
        neuerLink = document.createElement("a");
        neuerLink.setAttribute("href", "javascript:navi()");
        Text = document.createTextNode("Bild Nummer" + i);
        document.getElementById("bilder").appendChild(neuesLi);
        neuesLi.appendChild(neuerLink);
        neuerLink.appendChild(Text);

        }

        function navi() {
        alert("klappt");
        }

        </script>

        <div id="fenster">
        <img src="logo.gif">
        </div>

        <a href="javascript:back()" class="Mitte" id="zurück">Zurück</a>
        <a href="javascript:next()" class="Mitte" id="weiter">Weiter</a>
                                                                            <!-- es folgt ein script,der die slideshow bedient --!>
        <script type="text/javascript">
        var current = 0;

        function next() {

        current++;

        if ( current < 10 ) {
        foto = new Image(200, 200);
        foto.src = 'Bilder/l00' + current + ".jpg";
        document.getElementsByTagName("img")[0].src = foto.src;
        current++;
        } else {

        foto = new Image(200, 200);
        foto.src = 'Bilder/l0' + current + ".jpg";
        document.getElementsByTagName("img")[0].src = foto.src;
        }

        if ( current >= 62 ) {
        document.getElementById("weiter").style.visibility = "collapse";
        }else if ( current == 0 ) {
        document.getElementById("zurück").style.visibility = "collapse";
        } else {
        document.getElementById("weiter").style.visibility = "visible";
        document.getElementById("zurück").style.visibility = "visible";
        }

        }/*function beenden*/

        function back() {

        current--;

        if ( current < 10 ) {
        foto = new Image(200, 200);
        foto.src = 'Bilder/l00' + current + ".jpg";
        document.getElementsByTagName("img")[0].src = foto.src;

        } else {

        foto = new Image(200, 200);
        foto.src = 'Bilder/l0' + current + ".jpg";
        document.getElementsByTagName("img")[0].src = foto.src;

        }

        if ( current >= 62 ) {
        document.getElementById("weiter").style.visibility = "collapse";
        }else if ( current == 0 ) {
        document.getElementById("zurück").style.visibility = "collapse";
        } else {
        document.getElementById("weiter").style.visibility = "visible";
        document.getElementById("zurück").style.visibility = "visible";
        }

        }
        </script>

        </body>

        1. neuerLink.setAttribute("href", "javascript:navi()");

          Das ist natürlich Blödsinn. Einmal brauchst du die Funktion setAttribute nicht im IE Schwierigkeiten macht anderseits willst du ja hier keine neue Seite aufrufen, von daher wäre ein anderes Element besser und du löst das über den click Event.

          ganz einfach so: neuerLink.onclick = navi;

          Struppi.

          --
          Javascript ist toll (Perl auch!)
      2. hi,

        Du kannst einen Textknoten nicht zweimal in den DOM-Baum einhängen, sondern nur einmal.

        Kann man schon, wie jedes andere Element auch - nur wird er dann natürlich von seiner derzeitigen Position entfernt, also "umgehangen".

        Kann auch sehr praktisch sein, bspw. beim Sortieren von Tabellen/Listen per Javascript.

        gruß,
        wahsaga

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