Mam poniższy kod, aby znaleźć elementy z ich nazwą klasy:
// Get the element by their class name
var cur_columns = document.getElementsByClassName('column');
// Now remove them
for (var i = 0; i < cur_columns.length; i++) {
}
Po prostu nie wiem, jak je usunąć ..... MUSZĘ odwołać się do rodzica czy coś? Jak najlepiej sobie z tym poradzić?
@ Karim79:
Oto JS:
var col_wrapper = document.getElementById("columns").getElementsByTagName("div");
var len = col_wrapper.length;
alert(len);
for (var i = 0; i < len; i++) {
if (col_wrapper[i].className.toLowerCase() == "column") {
col_wrapper[i].parentNode.removeChild(col_wrapper[i]);
}
}
Oto kod HTML:
<div class="columns" id="columns">
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div class="column"><input type="checkbox" name="col_list[]" value="cows">cows</div>
<div name="columnClear" class="contentClear" id="columnClear"></div>
</div>
Edycja: Cóż, po prostu skorzystałem z opcji jQuery.
javascript
removeclass
Brett
źródło
źródło
Odpowiedzi:
Używając jQuery (którego naprawdę możesz użyć w tym przypadku, myślę), możesz zrobić to w następujący sposób:
W przeciwnym razie będziesz musiał użyć rodzica każdego elementu, aby go usunąć:
źródło
Jeśli wolisz nie używać JQuery:
źródło
elements
tablicę.getElementsByClassName
jest to kolekcja na żywo. developer.mozilla.org/en-US/docs/Web/API/NodeListKorzystając z ES6, możesz:
źródło
W czystym Javascript, bez jQuery lub ES6, możesz zrobić:
źródło
To działa dla mnie
źródło
Brett - czy wiesz, że zgodnie z quirksmode nie
getElementyByClassName
ma wsparcia od IE 5.5 do 8 ? Lepiej będzie postępować zgodnie z tym wzorcem, jeśli zależy Ci na kompatybilności z różnymi przeglądarkami:elements[i].parentNode.removeChild(elements[i])
jak mówili inni faceci.Szybki przykład:
Oto krótkie demo.
EDYCJA: Oto poprawiona wersja, specyficzna dla Twojego znacznika:
Problem był moją winą; kiedy usuwasz element z wynikowej tablicy elementów, długość zmienia się, więc jeden element jest pomijany przy każdej iteracji. Rozwiązaniem jest przechowywanie odniesienia do każdego elementu w tymczasowej tablicy, a następnie pętla nad nimi, usuwając każdy z nich z DOM.
Spróbuj tutaj.
źródło
Wolę używać
forEach
overfor
/while
looping. Aby użyć, należy najpierw przekonwertowaćHTMLCollection
naArray
:Zwróć uwagę, nie jest to konieczny najbardziej efektywny sposób. Po prostu dużo bardziej eleganckie dla mnie.
źródło
Jedna linia
Na przykład możesz to zrobić na tej stronie, aby usunąć informacje o użytkowniku
źródło
Tak, musisz usunąć z rodzica:
źródło
Możesz użyć tej składni:
node.parentNode
Na przykład:
źródło
Funkcja rekurencyjna może rozwiązać twój problem, jak poniżej
źródło
Jeśli chcesz usunąć elementy, które są dodawane dynamicznie, spróbuj tego:
źródło
LUB
źródło
Jest to bardzo proste, jednowierszowe, używając operatora rozszerzania ES6 due document.getElementByClassName zwraca kolekcję HTML.
źródło
Błąd pomijania elementów w tym (kod z góry)
można naprawić, po prostu wykonując pętlę wstecz w następujący sposób (aby tymczasowa tablica nie była potrzebna)
źródło
Możesz skorzystać z prostego rozwiązania, po prostu zmień klasę, zaktualizowany zostanie filtr HTML Collection:
Ref: http://www.w3.org/TR/2011/WD-html5-author-20110705/common-dom-interfaces.html
źródło