2013-07-15 16 views
40

Chcę móc dodać wiele wierszy do elementu div, a także je usunąć. Mam przycisk "+" u góry strony, który służy do dodawania treści. Następnie po prawej stronie każdego rzędu znajduje się przycisk "-" służący do usuwania tego samego rzędu. Po prostu nie mogę znaleźć kodu javascript w tym przykładzie.Dodaj/usuń HTML wewnątrz div używając JavaScript

To moja podstawowa struktura HTML:

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

<div id="content"> 

</div> 

To jest to, co chcę, aby dodać wewnątrz zawartości div:

<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

Czy możesz dodać swój kod JavaScript? – elclanrs

+0

@elclanrs Próbowałem wykonać ten samouczek: http://www.dustindiaz.com/add-and-remove-html-elements-dynamically-with-javascript/, ale nie dostałem kodu do pracy z moim przykładem. Sprawdziłem również zaktualizowaną odpowiedź, którą napisał, ale tak naprawdę nie rozumiem kodu, ponieważ jestem całkiem nowym użytkownikiem JavaScript. –

Odpowiedz

74

Możesz zrobić coś takiego.

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

Chcę móc dodawać wiele wierszy. Moje pytanie było trochę niejasne, więc je zredagowałem. –

+0

Obsługuje wiele wierszy. –

+1

Och, zgadza się. Właśnie popełniłem błąd podczas próby twojego kodu. Już działa. Twoje zdrowie! –

-1

uczynić klasę dla tego przycisku pozwala powiedzieć:

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

Twój js powinien wyglądać tak:

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

Nie wspomniał o jQuery. –

2

Możesz użyć tej funkcji, aby dodać dziecko do elementu 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

spróbuj następujących wygenerować

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

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

    } 
3

Aby usunąć węzeł można spróbować to rozwiązanie bardzo mi pomógł.

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