Javascript tableau removeChild
-
24-10-2019 - |
Question
cela semble assez simple, mais je ne peux pas le faire au travail. Je pourrais ajouter des éléments DOM, mais je ne peux pas les enlever lors de l'utilisation d'un tableau.
<script language="javascript">
fields = 0;
count = 0;
function addInput() {
if (fields != 10) {
var htmlText = "<input type='search' value='' name='field[]' />";
var remButton = "<input type='button' value='del' onclick='remove()' />";
var newElement = document.createElement('div');
newElement.id = 'SomeID'+fields;
newElement.innerHTML = htmlText + remButton + newElement.id;
var fieldsArea = document.getElementById('text');
fieldsArea.appendChild(newElement);
fields += 1;
} else {
...
}
count++;
}
// NEED HELP FROM HERE PLEASE
// You don't need to Loop, just get the button's id and remove that entire 'SomeID'
function remove() {
fieldsArea = document.getElementById('text');
fieldsArea.removeChild(SomeID1); <-----------------------THIS WORKS!
fieldsArea.removeChild(SomeID+count); <------------------THIS JUST WOULDN'T
count--;
}
</script>
Dans la fonction de suppression, l'écriture SomeID1 fonctionne et supprimer le premier élément ajouté, mais lorsque je tente d'utiliser un « count », je ne peux pas supprimer mes « éléments ».
Toute aide serait très appréciée.
Merci!
La solution
Vous devez obtenir une référence à l'élément premier. À l'heure actuelle, vous passez une SomeID
variable non définie à la fonction.
par exemple:.
var element = document.getElementById('SomeID' + fields);
// or starting by zero: var element = document.getElementById('SomeID0');
element.parentNode.removeChild(element);
Si vous voulez supprimer le div
pour lequel le bouton a été cliqué, vous devez passer une référence à la div
correspondant à la fonction remove
.
'<input type="button" value="del" onclick="remove(this.parentNode)" />';
this
se référer à la touche et comme il est un enfant de la div
, this.parentNode
fait référence à cette div
.
Vous avez également changer votre fonction d'accepter l'élément qui doit être supprimé:
function remove(element) {
element.parentNode.removeChild(element);
count--;
}
Vous avez probablement aussi à la mise à jour fields
, mais je ne sais pas comment votre code est censé fonctionner.
Si vous voulez supprimer tous vous devez boucle:
for(;fields--;) {
var element = document.getElementById('SomeID' + fields);
element.parentNode.removeChild(element);
}
ont également un oeil à la documentation de removeChild
.
Autres conseils
Le removeChild
a besoin d'un nœud (élément DOM) en tant que paramètre. Dans ce cas,
fieldsArea.removeChild(SomeID+count);
vous pouvez par exemple passer le nœud de cette façon
fieldsArea.removeChild(document.getElementById('SomeID'+count));