Elemente über das DOM erstellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Elemente über das DOM erstellen

    Hi, ich möchte gerne in einer CMS Oberfläche Links hinzufügen lassen.
    Dazu benutze ich input Felder:
    PHP-Code:
    <span id="spanlink1">Link URL 1:</span><br id="br1" />
    <
    input type="text" id="link1" name="link[]" /><br id="br11" />
    <
    span id="spantext1">Link Beschriftung 1:</span><br id="br111" />
    <
    input type="text" id="linktext1" name="linktext[]" /><br id="br1111" /> 
    Nun möchte ich über ein Formular, in das der Admin eingeben kann wieviele Links er hinzufügen will, mehr input Felder erstellen.
    dazu hab ich mir folgendes ausgedacht.
    PHP-Code:
    function addlinks(more){
    var 
    anzahl 0; var 1;
        
    //Auslesen Wie Viele Linkfelder Schon Vorhanden Sind, Damit Fortlaufend Nummeriert Werden Kann
        
    while (typeof(document.getElementById("link" i)) != "undefined"){
            
    i++;
            
    anzahl++;
        }
        if (
    anzahl <= 10 && !isNaN(more) && more 10){ 
            for (var 
    1<= morez++){
                
    anzahl++;
                var 
    linkdiv document.getElementById("linkdiv");
                
    //Elemente Erstellen
                
    var span document.createElement("span");
                var 
    br document.createElement("br");
                var 
    inputlink document.createElement("input");
                var 
    br2 document.createElement("br");
                var 
    span2 document.createElement("span");
                var 
    br3 document.createElement("br");
                var 
    inputlinktext document.createElement("input");
                var 
    br4 document.createElement("br");
                
    //Span Tag Für Link Überschrift
                
    span.setAttribute("id""spanlink" anzahl);
                
    //Br Tag Für Ersten Zeilenumbruch
                
    br.setAttribute("id""br" anzahl);
                
    //Input Tag Für Link Textfeld
                
    inputlink.setAttribute("type""text");
                
    inputlink.setAttribute("name""link[]");
                
    inputlink.setAttribute("id""link" anzahl);
                
    //Br Tag Für Zweiten Zeilenumbruch
                
    br2.setAttribute("id""br" anzahl anzahl);
                
    //Span Tag Für Link Beschriftung Überschrift
                
    span2.setAttribute("id""spantext" anzahl);
                
    //Br Tag Für Dritten Zeilenumbruch
                
    br3.setAttribute("id""br" anzahl anzahl anzahl);
                
    //Input Tag Für Link Beschriftung Textfeld
                
    inputlinktext.setAttribute("type""text");
                
    inputlinktext.setAttribute("name""linktext[]");
                
    inputlinktext.setAttribute("id""linktext" anzahl);
                
    //Br Tag Für Vierten Zeilenumbruch
                
    br4.setAttribute("id""br" anzahl anzahl anzahl anzahl);
                
    /*###########Ausführen###########*/
                
    linkdiv.appendChild(span);
                
    linkdiv.appendChild(br);
                
    linkdiv.appendChild(inputlink);
                
    linkdiv.appendChild(br2);
                
    linkdiv.appendChild(span2);
                
    linkdiv.appendChild(br3);
                
    linkdiv.appendChild(inputlinktext);
                
    linkdiv.appendChild(br4);
            }
        }

    In der Variable [FONT=courier new]more[/FONT] wird übergeben, wie viele Links er hinzufügen will. Nachdem ich da eingegeben habe werden nur leider keine weiteren input Felder angezeigt. Javascript Konsole haut aber auch keine Fehler raus. Ich finde meinen Fehler nich (weiß nichmal ob das so überhaupt geht) Vielleicht wisst ihr ja Rat!
    Vielen Dank im Vorraus
    Dulla_Po
    Zuletzt geändert von Dulla_Po; 09.08.2007, 13:33.

  • #2
    Der Code sieht konsistent aus...

    Vermutlich liegt dein Problem daran, dass br kein Kind von linkdiv sein sollte, sondern von dem neu hinzugefügten span...

    analog gilt das für deine inputs und "links" ebenfalls....

    deine appendChilds müssen also angepasst werden...

    ansonsten sehe ich genauso wenig fehler, wie die fehlerkonsole *gg*...

    greetz, high
    Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
    When everything else fails, manipulate the data...
    Beschriftungen / Großformatdruck / Werbemittel

    Kommentar


    • #3
      Folgender Teil verursachte bei mir eine Endlosschleife, da typeof immer 'object zurücklieferte:
      PHP-Code:
      while (typeof(document.getElementById("link" i)) != "undefined"){
              
      i++;
              
      anzahl++;

      Folgende Änderung ließ das Script wie gewünscht laufen:
      PHP-Code:
      while (document.getElementById("link" i)) {
              
      i++;
              
      anzahl++;

      Wofür sind eigentlich all diese ids gut? Scheint für mich irgendwie überflüssig (erst recht bei <br>s ?!), aber ich lass mich gerne über sinn und zweck aufklären. Der Text in den <span>s fehlt natürlich auch noch (falls überhaupt gewünscht, aber wozu sonst die spans^^).

      Hoffe das hilft, bei mir gings

      Kommentar


      • #4
        Ah Super Vielen Dank! Naja, ich geb den br's z.b ja alles andere id attribute die durchnumeriert sind, damit ich sie später wieder kontrolliert löschen kann. Da müsste eigentlich anstatt anzahl z als Zählvariable das ganze durchnummerieren. Wieder ein Denkfehler^^ aber jetz geändert. Weiß nicht ob das auch über ein array gehen würde, hab das mit dem DOM Knoten erstellen erst angefangen.
        Zuletzt geändert von Dulla_Po; 13.08.2007, 12:57.

        Kommentar

        Lädt...
        X