2016-05-12 6 views
0

Ich versuche, ein div zu klonen, nachdem ein Benutzer in der Menge der divs geklont wird. Der Benutzer wird eine Zahl eingeben (sagen wir 3) und die Funktion erzeugt drei group-container divs. Die Eingabeaufforderung funktioniert, aber danach passiert nichts. Scheint ziemlich einfach, aber es entgeht mir. Ist meine Logik falsch? Offensichtlich sind meine Programmierkenntnisse sehr neu.Javascript - klonen ein div nach Benutzereingabe auf Menge

  1. ich eine Funktion, die den Eingang (groupInput)
  2. eine for-Schleife zu schaffen, hat die folgende Anweisung
  3. Die wiederholen for-Schleife wird klonen group-container so oft wie i<groupInput

    function addGroup() { 
        var groupInput = prompt("How many groups? 1-100"); 
        for(i=0; i<groupInput; i++){ 
        var group = document.getElementById("group-container"); 
        var clone = group.cloneNode(true); 
        group.parentNode.appendChild(clone); 
        } 
    } 
    

Alle Vorschläge würden sehr geschätzt werden.

Aktualisiert

Danke für die Vorschläge, erhalte ich, ich sollte jetzt Klasse für diese.

Ich habe es mit der ID in jsfiddle arbeiten (nicht sicher, warum es nicht in meinem HTML ist), aber jetzt mit der Klasse ist es nicht: https://jsfiddle.net/waynebunch/c5sw5dxu/. getElementsByClassName ist gültig, richtig?

+0

Dies sieht aus wie die falsche Lösung zu lösen wer weiß was. Sie werden mit mehreren Knoten im Dom alle mit der gleichen 'ID' enden. Das riecht komisch. –

+0

Eigentlich scheint es hier zu arbeiten: https://jsfiddle.net/briosheje/70wn3oah/ (das ist schrecklich, nicht duplizieren IDs!) – briosheje

+0

@CrescentFresh Got it, wird sich ändern –

Antwort

2

Sie sollten die Gruppendeklaration außerhalb der for-Schleife platzieren, damit der Klon während der Schleife unverändert bleibt.

Fiddle

function addGroup() { 
    var groupInput = prompt("How many groups? 1-100"); 
    var group = document.getElementById("group-container"); 
    for(i=0; i<groupInput; i++){  
    var clone = group.cloneNode(true); 
    group.parentNode.appendChild(clone); 
    } 
} 
0

Die prompt() Methode gibt wahrscheinlich die richtige Zahl, aber mit Typ auf String festgelegt. Stattdessen versuchen

Um den Wert in eine Zahl zu konvertieren, die die FOR-Schleife ordnungsgemäß ausgeführt werden soll.

+0

Die for-Schleife sollte immer noch funktionieren, wenn Sie es eine Zeichenfolge geben – IrkenInvader

+0

Sie haben Recht, dumm von mir, das zu vergessen. Wie auch immer, ich denke, es ist eine gute Methode, es aus Sicherheitsgründen in eine ganze Zahl zu konvertieren. – Pandaqi

+0

Wahr! Definitiv gute Übung, um es zuerst zu konvertieren. – IrkenInvader

0

So etwas wie die folgenden funktionieren könnte, wenn Sie Ihre Quantität erhalten in einer Eingabeaufforderung oder Texteingabe.

var doc = document; 

var input = prompt("Please enter your qty", "0"); 
if (input != null) { 
    for (i = 0; i < input; i++) { 
     var elem = doc.createElement('div'); 
     elem.className = 'group-container'; 
    } 
} 
Verwandte Themen