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!

Était-ce utile?

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));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top