tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
186
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    südpol südpol ist offline Mitglied Brokat
    Registriert seit
    Apr 2003
    Ort
    London (UK)
    Beiträge
    253
    Hi,

    ich bin etwas eingerostet was javescript angeht Ich muss gerade ein paar kleine Funktionen ändern und komme einfach nicht weiter - auch suchen hat bis jetzt nicht das richtige zu Tage gefördert.

    Ich habe eine unsortierte Liste mit zwei Ebenen - Auf beiden Ebenen befinden sich input Felder welche dynamisch erweiterbar sein sollen. Mein Testcode sieht so aus:
    HTML-Code:
    <html>
     <head>
       <title>Clone elements</title>
    	<script language="JavaScript">
    		function AddNewL1(button, objid)
    		{
    			var clone_me = document.getElementById(objid).firstChild.cloneNode(true);
    			//var clone_me = clone_me.replace(/XXX/g, L1_count++);
    			
    			button.parentNode.appendChild(clone_me);
    			
    		}
    		
    		function AddNewL2(button, objid, L1_Element)
    		{
    			var clone_me = document.getElementById(objid).firstChild.cloneNode(true);
    			//var clone_me = clone_me.replace(/XXX/g, L1_Element); 
    
    			button.parentNode.appendChild(clone_me);
    		}
    		
    		var L1_count = 2;
         </script>
      </head>
      <body>
      
        <ul>
    		<li class="l1">Level 01: <input type="text" name="l1[]"><button onclick="AddNewL1(this, 'dolly_l1');">+</button>
    			<ul>
    				<li id="1.1">Level 02  <input type="text" name="l2_1[]" /><button onclick="AddNewL2(this, 'dolly_l2', '0');">+</button></li>
    				<li id="1.2">Level 02  <input type="text" name="l2_1[]" /><button onclick="AddNewL2(this, 'dolly_l2', '0');">+</button></li>
    			</ul>
    		</li>
    		<li class="l1">Level 01: <input type="text" name="l1[]"><button onclick="AddNewL1(this, 'dolly_l1');">+</button>
    			<ul>
    				<li id="1.1">Level 02  <input type="text" name="l2_1[]" /><button onclick="AddNewL2(this, 'dolly_l2', '1');">+</button></li>
    				<li id="1.1">Level 02  <input type="text" name="l2_1[]" /><button onclick="AddNewL2(this, 'dolly_l2', '1');">+</button></li>
    				<li id="1.1">Level 02  <input type="text" name="l2_1[]" /><button onclick="AddNewL2(this, 'dolly_l2', '1');">+</button></li>
    			</ul>
    		</li>
    	</ul>
    
    		
    	<div id="dolly_l1" style="visibility:hidden; display:none"><li class="l1">Level 01: <input type="text" name="l1[]"><button onclick="AddNewL1(this, 'dolly_l1');">+</button>
    			<ul>
    				<li id="1.1">Level 02  <input type="text" name="l2_XXX[]" /><button onclick="AddNewL2(this, 'dolly_l2', 'XXX');">+</button></li>
    			</ul>
    		</li>
    	</div>
    	
    	<div id="dolly_l2" style="visibility:hidden; display:none"><li class="l2">Level 02 <input type="text" name="l2_XXX[]" /><button onclick="AddNewL2(this, 'dolly_l2', 'XXX');">+</button></li>
    	</div>
    	</body>
    </html>
    Aus dem Testcode ergibt sich für mich jetzt ein Problem:
    Ich muss einen string in den zu clonenden Felder entsprechend der Position anpassen. Ich habe eine replace Funktion in JS gefunden - diese funktioniert bei mir jedoch ohne Fehlermeldung nicht (daher auskommentiert).

    Bin für jede Hilfe Dankbar!
    Geändert von südpol (12.09.11 um 15:46 Uhr) Grund: Lösung für erstes Problem direkt nach Posting gefunden - unglaublich wie oft das vorkommt :-)
     

  2. #2
    südpol südpol ist offline Mitglied Brokat
    Registriert seit
    Apr 2003
    Ort
    London (UK)
    Beiträge
    253
    Hi,

    hmm habe ich mein Problem zu umständlich beschrieben oder ist die Lösung des Problems so komplex? Gibt es vielleicht einen anderen Weg um das besser / richtiger zu machen?
     

  3. #3
    südpol südpol ist offline Mitglied Brokat
    Registriert seit
    Apr 2003
    Ort
    London (UK)
    Beiträge
    253
    Hi,

    so Problem gelöst. Ich habe die Funktionen so umgeschrieben, dass der Code nicht geclont wird sondern direkt in der Funktion erstellt wird:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    function AddNewL2(button, objid, L1_Element)
            {
                var newLI = document.createElement("li");
                newLI.innerHTML = "<input type=\"text\" name=\"l2_"+L1_Element+"[]\" /><button onclick=\"AddNewL2(this, \'dolly_l2\', \'"+L1_Element+"\');\">+</button><button onclick=\"RemoveThis(this);\">-</button>";
        
                button.parentNode.parentNode.appendChild(newLI);
            }

    Damit konnte ich die Variablen jetzt auch direkt verwenden. Nicht ganz so generisch wie ich es gerne gehabt hätte - aber OK
     

Ähnliche Themen

  1. Lineare Liste, Elemente hinzufügen und entfernen
    Von mrs_schokokeks im Forum C/C++
    Antworten: 11
    Letzter Beitrag: 07.09.10, 08:07
  2. C# Elemente in Liste hinzufügen und auslesen
    Von Terminator2 im Forum .NET Windows Forms
    Antworten: 8
    Letzter Beitrag: 31.03.09, 19:17
  3. [vb.net] Controls zu einer Liste hinzufügen
    Von Klein0r im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 05.03.09, 13:23
  4. Link in Liste hinzufügen
    Von kdc im Forum PHP
    Antworten: 9
    Letzter Beitrag: 19.10.08, 19:52
  5. Link in Liste hinzufügen
    Von kdc im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 12.10.08, 12:13

Stichworte