2013-07-15 11 views
40

Desidero poter aggiungere più file a un div e rimuoverle. Ho un pulsante '+' nella parte superiore della pagina che serve per aggiungere contenuti. Poi a destra di ogni riga c'è un pulsante '-' che serve per rimuovere quella riga. Non riesco proprio a capire il codice javascript in questo esempio.Aggiungi/rimuovi HTML all'interno di div utilizzando JavaScript

Questa è la mia struttura HTML di base:

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

<div id="content"> 

</div> 

Questo è quello che voglio aggiungere all'interno del div contenuti:

<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

Puoi pubblicare il tuo codice JavaScript finora? – elclanrs

+0

@elclanrs Ho provato a seguire questo tutorial: http://www.dustindiaz.com/add-and-remove-html-elements-dynamically-with-javascript/ ma non ho ottenuto il codice per funzionare con il mio esempio. Ho anche esaminato la risposta aggiornata che ha pubblicato ma non ho capito il codice in quanto sono abbastanza nuovo per JavaScript. –

risposta

74

Si può fare qualcosa di simile.

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

Voglio poter aggiungere più righe. La mia domanda era un po 'poco chiara, quindi l'ho modificata. –

+0

Supporta più righe. –

+1

Oh, giusto. Ho appena fatto un errore nel provare il tuo codice. Sta lavorando adesso. Saluti! –

-1

fare una classe per quel tasto consente di dire:

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

il tuo js dovrebbe apparire così:

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

Non ha menzionato jQuery. –

2

È possibile utilizzare questa funzione per aggiungere un elemento secondario a un elemento DOM.

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

riprova segue per generare

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

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

    } 
3

Per rimuovere il nodo si può provare questa soluzione mi ha aiutato.

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