Ich habe den folgenden Code, um Elemente mit ihrem Klassennamen zu finden:
// 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++) {
}
Ich weiß nur nicht, wie ich sie entfernen soll ..... MUSS ich auf die Eltern verweisen oder so? Was ist der beste Weg, um damit umzugehen?
@ Karim79:
Hier ist der 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]);
}
}
Hier ist der 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>
Bearbeiten: Am Ende wurde nur die Option jQuery verwendet.
javascript
removeclass
Brett
quelle
quelle
Antworten:
Mit jQuery (das Sie in diesem Fall wirklich verwenden könnten, denke ich) können Sie dies folgendermaßen tun:
Andernfalls müssen Sie das übergeordnete Element jedes Elements verwenden, um es zu entfernen:
quelle
Wenn Sie JQuery nicht verwenden möchten:
quelle
elements
Array verkleinert wird.getElementsByClassName
es sich um eine Live-Sammlung handelt. developer.mozilla.org/en-US/docs/Web/API/NodeListMit ES6 können Sie Folgendes tun:
quelle
In reinem Javascript ohne jQuery oder ES6 können Sie Folgendes tun:
quelle
Das funktioniert bei mir
quelle
Brett - wissen Sie, dass die
getElementyByClassName
Unterstützung von IE 5.5 bis 8 laut quirksmode nicht vorhanden ist ? Wenn Sie sich für die Cross-Browser-Kompatibilität interessieren, sollten Sie diesem Muster besser folgen:elements[i].parentNode.removeChild(elements[i])
wie die anderen sagten.Kurzes Beispiel:
Hier ist eine kurze Demo.
BEARBEITEN: Hier ist die feste Version, die für Ihr Markup spezifisch ist:
Das Problem war meine Schuld; Wenn Sie ein Element aus dem resultierenden Array von Elementen entfernen, ändert sich die Länge, sodass bei jeder Iteration ein Element übersprungen wird. Die Lösung besteht darin, einen Verweis auf jedes Element in einem temporären Array zu speichern und diese anschließend zu durchlaufen und jedes Element aus dem DOM zu entfernen.
Probieren Sie es hier aus.
quelle
Ich bevorzuge
forEach
Overfor
/while
Looping. Um es ist notwendig , zu verwenden , zu konvertieren ,HTMLCollection
umArray
zuerst:Achten Sie darauf, es ist nicht unbedingt der effizienteste Weg. Einfach viel eleganter für mich.
quelle
Eine Linie
Auf dieser Seite können Sie beispielsweise Benutzerinformationen entfernen
quelle
Ja, Sie müssen vom übergeordneten Element entfernen:
quelle
Sie können diese Syntax verwenden:
node.parentNode
Beispielsweise:
quelle
Die rekursive Funktion kann Ihr Problem wie unten beschrieben lösen
quelle
Wenn Sie Elemente entfernen möchten, die dynamisch hinzugefügt werden, versuchen Sie Folgendes:
quelle
ODER
quelle
Es ist sehr einfach, einzeilig, mit dem ES6-Spread-Operator aufgrund von document.getElementByClassName wird eine HTML-Sammlung zurückgegeben.
quelle
Die Fehler beim Überspringen von Elementen (Code von oben)
kann behoben werden, indem die Schleife wie folgt rückwärts ausgeführt wird (so dass das temporäre Array nicht benötigt wird)
quelle
Sie können eine einfache Lösung verwenden, ändern Sie einfach die Klasse, der HTML-Sammlungsfilter wird aktualisiert:
Ref: http://www.w3.org/TR/2011/WD-html5-author-20110705/common-dom-interfaces.html
quelle