Ergebnis 1 bis 5 von 5
  1. #1
    a3046851 ist offline Grünschnabel
    registriert
    24-12-2012
    Beiträge
    1

    appendChild(function...) von einem generierten Element

    Hallo,
    Ich habe ein kleines problem und kann es leider nicht selbst lösen.

    Ich will per JavaScript ein neues Tag erstellen. In diesem Fall ein div-Tag.
    In dieses neue div-Tag sollen nun Links geschrieben werden. Per Funktion mit Hilfe eines Arrays.
    Leider funktioniert das aber nicht wie ich es mir gedacht habe:
    Hier der Code:
    Code:
    var favId = new Array('1003', '7001', '9001');
    
    function auswahl(id) {
    for (var i = 0; i < document.getElementsByTagName('option').length; i++) {
     if (document.getElementsByTagName('option')[i].value == id) {
      document.getElementsByTagName('option')[i].setAttribute('selected','selected');
     }
    }
    }
    
    function Links(id) {
    for (var i = 0; i < id.length; i++) {           
     var link = document.createElement('a');
     document.body.appendChild(link).setAttribute('style', 'text-decoration:none;')
     document.body.appendChild(link).setAttribute('href', '#')
     document.body.appendChild(link).onclick = function() {
      auswahl(id[i]);
     };
     document.body.appendChild(link).innerHTML = id[i] + '<br />';
    }
    }
    
    var llc = document.createElement('div');
    llc.appendChild(Links(favId));

    Kann mit bitte jemand von euch sagen warum das nicht funktioniert?

  2. #2
    rico2009 Guest

    AW: appendChild(function...) von einem generierten Element

    Hi,

    was funktioniert nicht? Schau bitte mal in die Fehlerkonsole und poste die Fehlermeldung. Eventuell kommst du dann dem Fehler auch selber auf die Schliche.

    Gruß

  3. #3
    justanotheruser ist offline Doppel-As
    registriert
    10-05-2012
    Ort
    Bad Frankenhausen
    Beiträge
    145

    AW: appendChild(function...) von einem generierten Element

    habs mal kurz überflogen,
    hoffe die hinweise helfen ein wenig weiter...

    mfg


    PHP-Code:
    ...
    function 
    Links(id) {
    //for (var i = 0; i < id.length; i++) {           
    for (var 0max id.lengthmaxi++) { // besser, weil dann nicht immer die eigenschaft length abgerufen werden muss
     
    var link document.createElement('a');
    /**
     * Hier ist ein schlechter Platz um link zu erzeugen,
     * da immer wenn max > i+1 link wieder überschrieben wird...
     * diese Zeile muss also vor die for-schleife
     */

    // ab hier kann ich nur spekulieren ;)
    // document.body.appendChild(link).setAttribute('style', 'text-decoration:none;')
      
    link.style.textDecoration "none";
     
    //document.body.appendChild(link).setAttribute('href', '#')
      
    link.setAttribute('href''#');
      
    link.onclick = function() {
      
    auswahl(id[i]); 
     };
    // document.body.appendChild(link).innerHTML = id[i] + '<br />';
     
    link.innerHTML id[i] + '<br />';
    }
    // hier sollte man auch was zurückgeben
    // zb
    // return link
    }

    var 
    llc document.createElement('div');


    /**
     * Funktion Links gibt nichts zurück, darum kann das nicht funktionieren
     */
    llc.appendChild(Links(favId)); 

  4. #4
    Avatar von Dormilich
    Dormilich ist offline Kaiser
    registriert
    15-01-2010
    Beiträge
    1.277

    AW: appendChild(function...) von einem generierten Element

    Frage, warum das href setzen, wenn es doch gar nicht gebraucht wird? daß der cursor zu einer Hand wird, kann man auch mit CSS erreichen.

    nächstes Problem, der Event handler (onclick) ist ein Closure, es wird also immer nur das letzte Element in id an auswahl() übergeben, egal in welchem link.

  5. #5
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.579

    AW: appendChild(function...) von einem generierten Element

    Mach' mal anstatt dem
    Code:
    auswahl(id[i]);
    ein
    Code:
    alert(i);
    , dann siehst du, warum das nicht funktioniert.

    Als Lösung würde ich entweder id.forEach() (ACHTUNG: ältere Browser unterstützen das nicht - lässt sich aber mit einem entsprechenden Skript nachrüsten) verwenden, den Ausgabewert irgendwo im link speichern (z.B.
    Code:
    	link.auswahl = id[i];
    	link.onclick = function() {
    		auswahl(this.auswahl); 
    	};
    ) oder einen neuen Funktionsscope benutzen:
    Code:
    link.onclick = (function(_id){
    	return function(){
    		auswahl(_id);
    	};)(id[i]);
    PS: alles ungetestet

Ähnliche Themen

  1. nach appendChild auf Inhalt vom Element zugreifen
    Von Filemon im Forum JavaScript
    Antworten: 9
    Letzter Beitrag: 07-06-2011, 21:51
  2. Function mit einem Button starten
    Von new_developer im Forum JavaScript
    Antworten: 5
    Letzter Beitrag: 29-04-2010, 14:18
  3. Antworten: 1
    Letzter Beitrag: 28-12-2009, 15:41
  4. Positionsberechnung in einem Element
    Von Mahdi im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 04-05-2008, 21:25
  5. Funktion von einem Element auf Klasse umschreiben
    Von Skittles im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 10-07-2006, 13:12

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •