tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
235
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    kenguruh2002 kenguruh2002 ist offline Mitglied
    Registriert seit
    Apr 2011
    Beiträge
    20
    Hallo,

    ich versuche das letzte "äussere" DIV zu clonen, habe aber leider absolut keinen Plan wie ich das machen soll. Was ich hinbekommen habe, ist es das 1. DIV zu clonen.

    Meine Frage also:
    Wie kann ich die Anzahl der "äusseren" DIVs ermitteln bzw. das letzte? Sprich das letzte "<div class="container">"?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    function cloneContainer(obj, element) {
        var cloneID = obj.id.replace("btn_", "row_");
     
        // Anstatt der [0] müsste also das letzte angegeben werden?
        var tmpNode = document.getElementById(cloneID).getElementsByTagName(element)[0].cloneNode(true);
     
        // Code zum ändern der ID's von label, input, select, textarea, .... fehlt jetzt hier
     
        document.getElementById(cloneID).appendChild(tmpNode);
    }
    HTML-Code:
    <div id="row_hausarzt">
    <!-- BEGIN row_hausarzt -->
      <div class="container">
        <div class="content">
          <div class="label"><label for="hausarzt_vorname_{row_hausarzt.CNT}">Vorname</label><font class="blue">*</font></div>
          <div class="field"><input{row_hausarzt.E_HAUSARZT_VORNAME} style="width: 238px;" type="text" id="hausarzt_vorname_{row_hausarzt.CNT}" name="hausarzt[vorname][]" value="{row_hausarzt.F_HAUSARZT_VORNAME}" maxlength="50" /></div>
        </div>
        <div class="content">
          <div class="label"><label for="hausarzt_nachname_{row_hausarzt.CNT}">Nachname</label><font class="blue">*</font></div>
          <div class="field"><input{row_hausarzt.E_HAUSARZT_NACHNAME} style="width: 238px;" type="text" id="hausarzt_nachname_{row_hausarzt.CNT}" name="hausarzt[nachname][]" value="{row_hausarzt.F_HAUSARZT_NACHNAME}" maxlength="50" /></div>
        </div>
      </div>
    <!-- END row_hausarzt -->
    </div>
    <div class="container">
      <div class="content">
        <div class="label">&nbsp;</div>
        <div class="field"><button style="width: 100px;" type="button" id="btn_hausarzt" onclick="cloneContainer(this, 'div');">Neue Zeile(n)</button></div>
      </div>
    </div>
    Bitte nicht durch die {} stören lassen, die kommen vom Template.

    Ich hoffe dass ich es verständlich erklärt habe, und mir einer helfen kann. Als Ergebnis sollte dann folgendes rauskommen (gekürzt):
    HTML-Code:
    <div id="row_hausarzt">
      <div class="container">
        ....
      </div>
      <div class="container">
        ....
      </div>
      usw.....
    </div>
    Besten Dank...
    Geändert von kenguruh2002 (10.12.11 um 12:04 Uhr)
     
    --------------------------------
    Have Phune Kenguruh2002

  2. #2
    Netzwerkidi Netzwerkidi ist offline Mitglied Gold
    Registriert seit
    Oct 2010
    Beiträge
    237
    Blog-Einträge
    1
    Hai,

    Wie kann ich die Anzahl der "äusseren" DIVs ermitteln bzw. das letzte? Sprich das letzte "<div class="container">"?
    Vorschlag:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    var myDiv = document.getElementsByTagName('div');
      for ( var i=myDiv.length-1; i>0; i-- ) {
        if ( myDiv[i].className == "container" ) {
          if ( myDiv[i].parentNode == document.getElementsByTagName('body')[0] ) {
             alert ( 'Mach ett!!' );
          }
        }
      }

    Grüße
     

  3. #3
    kenguruh2002 kenguruh2002 ist offline Mitglied
    Registriert seit
    Apr 2011
    Beiträge
    20
    Erstmal danke für deine Antwort.

    Es ist mir aber so, dass ich irgend wo gelesen habe, dass "className" nicht von allen Browsern akzeptiert werden? Ist das was dran?
    Mir eigentlich auch egal, wenn Firefox und der IE ab 7.x das kann.
     
    --------------------------------
    Have Phune Kenguruh2002

  4. #4
    kenguruh2002 kenguruh2002 ist offline Mitglied
    Registriert seit
    Apr 2011
    Beiträge
    20
    Habs dann jetzt erstmal so gemacht.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    function cloneContainer(obj, clss) {
        var cloneID = obj.id.replace("btn_", "row_");
        var lastRow = document.getElementById(cloneID).getElementsByClassName(clss).length;
        var tmpNode = document.getElementById(cloneID).getElementsByClassName(clss)[lastRow-1].cloneNode(true);
     
        // Code zum ändern der ID's von label, input, select, textarea, .... fehlt jetzt hier
     
        document.getElementById(cloneID).appendChild(tmpNode);
    }

    Funktioniert erstmal.

    Vll hat aber einer noch ne bessere Lösung?
     
    --------------------------------
    Have Phune Kenguruh2002

  5. #5
    Netzwerkidi Netzwerkidi ist offline Mitglied Gold
    Registriert seit
    Oct 2010
    Beiträge
    237
    Blog-Einträge
    1
     

Ähnliche Themen

  1. Justify-Hack gesucht: Letzte Zeile auch "justify'en"
    Von DJLopez im Forum HTML & XHTML
    Antworten: 4
    Letzter Beitrag: 06.08.09, 13:19
  2. Objekt "clonen" ?
    Von schlumsch im Forum Java Grundlagen
    Antworten: 4
    Letzter Beitrag: 22.05.09, 17:00
  3. Antworten: 8
    Letzter Beitrag: 02.01.07, 23:17

Stichworte