i=0; function wstaw_sciane() { i++; var tekst = document.createTextNode(i+'. '); var input = document.createElement('input'); input.setAttribute('type', 'text'); input.setAttribute('name', 's[]'); input.setAttribute('class', 'c_sciany'); input.setAttribute('id', 'id'+i); var input2 = document.createElement('input'); input2.setAttribute('type', 'button'); input2.setAttribute('value', 'usun'); input2.setAttribute('onclick', 'usun_sciane();'); var div = document.createElement('div'); div.appendChild(tekst); div.appendChild(input); div.appendChild(input2); document.getElementById('sciany').insertBefore(div, document.getElementById('wstaw_pole')); }
i wszystko działa jak należy. Problem w tym, że nie potrafię stworzyć działającej funkcji na usuwanie stworzonych pól. Kombinowałem na różne sposoby, ale coś nie działa.
<form method="post" onSubmit="return check_form(this);"> <div class="wall_box"> <div id="sciany"> <input type="button" value="wstaw" onclick="wstaw_sciane('');" id="wstaw_pole" /> </div> </div> <div class="zatwierdz"> <input type='submit' value='oblicz' class="input2" /> <input type='reset' value='wyczyść' class="input2" /> </div> </form>
Próbowałem z usuwaniem konkretnego pola tekstowego, ale funkcja nie przyjmowała prawidłowego parametru funkcji. W funkcji usuwającej podawałem numer id pola do usuniecia, ale funkcja zwracała zupełnie inny numer.
Tak czy inaczej optymalnym rozwiązaniem byłoby usuwanie diva wraz z zawartością, w którym znajduje się button 'usun'.
Problem wydaje się prosty, ale ja nie mam za dużego doświadczenia w JS, a skakanie po węzłach i funkcja .removeChild jest dla mnie nowością.