2013-07-15 9 views
40

Ich möchte mehrere Zeilen zu einem div hinzufügen und auch entfernen. Ich habe oben auf der Seite einen '+' Knopf, der zum Hinzufügen von Inhalten dient. Dann gibt es rechts von jeder Zeile einen '-' Knopf, der diese Zeile entfernt. Ich kann den JavaScript-Code in diesem Beispiel einfach nicht herausfinden.Hinzufügen/Entfernen von HTML innerhalb div mit JavaScript

Dies ist meine grundlegende HTML-Struktur:

<input type="button" value="+" onclick="addRow()"> 

<div id="content"> 

</div> 

Dies ist, was ich in den Inhalt div hinzufügen möchten:

<input type="text" name="name" value="" /> 
<input type="text" name="value" value="" /> 
<label><input type="checkbox" name="check" value="1" />Checked?</label> 
<input type="button" value="-" onclick="removeRow()"> 
+1

Können Sie Ihren JavaScript-Code bisher posten? – elclanrs

+0

@elclanrs Ich habe versucht, dieses Tutorial zu folgen: http://www.dustindiaz.com/add-and-remove-html-elements-dynamically-with-javascript/ aber habe den Code nicht bekommen, um mit meinem Beispiel zu arbeiten. Ich habe mir auch die aktualisierte Antwort angesehen, die er gepostet hat, aber ich habe den Code nicht wirklich verstanden, da ich mit JavaScript ziemlich neu bin. –

Antwort

74

Sie können so etwas tun.

function addRow() { 
    var div = document.createElement('div'); 

    div.className = 'row'; 

    div.innerHTML = 
     '<input type="text" name="name" value="" />\ 
     <input type="text" name="value" value="" />\ 
     <label> <input type="checkbox" name="check" value="1" /> Checked? </label>\ 
     <input type="button" value="-" onclick="removeRow(this)">'; 

    document.getElementById('content').appendChild(div); 
} 

function removeRow(input) { 
    document.getElementById('content').removeChild(input.parentNode); 
} 
+0

Ich möchte mehrere Zeilen hinzufügen können. Meine Frage war etwas unklar, also habe ich sie bearbeitet. –

+0

Dies unterstützt mehrere Zeilen. –

+1

Oh, das stimmt. Habe gerade einen Fehler beim Ausprobieren Ihres Codes gemacht. Es funktioniert jetzt. Prost! –

-1

eine Klasse machen für diese Schaltfläche können sagen:

`<input type="button" value="+" class="b1" onclick="addRow()">` 

Ihr js sollte so aussehen:

$(document).ready(function(){ 
    $('.b1').click(function(){ 
     $('div').append('<input type="text"..etc '); 
    }); 
}); 
+2

Er hat jQuery nicht erwähnt. –

2

Mit dieser Funktion können Sie ein untergeordnetes Element zu einem DOM-Element hinzufügen.

function addElement(parentId, elementTag, elementId, html) 

{ 


// Adds an element to the document 


    var p = document.getElementById(parentId); 
    var newElement = document.createElement(elementTag); 
    newElement.setAttribute('id', elementId); 
    newElement.innerHTML = html; 
    p.appendChild(newElement); 
} 



function removeElement(elementId) 

{ 

    // Removes an element from the document 
    var element = document.getElementById(elementId); 
    element.parentNode.removeChild(element); 
} 
1

versuchen Sie bitte folgende generieren

function addRow() 
    { 
     var e1 = document.createElement("input"); 
     e1.type = "text"; 
     e1.name = "name1"; 

     var cont = document.getElementById("content") 
     cont.appendChild(e1); 

    } 
3

Knoten entfernen können Sie diese Lösung versuchen, es mir geholfen.

var rslt = (nodee=document.getElementById(id)).parentNode.removeChild(nodee); 
Verwandte Themen