2015-12-27 1 views
0

Je cherche un moyen d'insérer dynamiquement un bouton dans un div à partir d'un autre div, et quand le bouton est cliqué, tout le contenu de la DIV interne disparaît et tout Il ne me reste plus que la div extérieure et rien d'autre à l'intérieur.gestionnaire onclick qui supprime l'élément enfant

C'est ce que j'ai jusqu'à présent:

<div ID="Parent"> 
<div ID="Child"> 
</div> 
</div> 

clickableobject=document.createElement('Button'); 
achild=document.getElementById("Child"); 
achild.appendChild(clickableobject); 
clickableobject.onclick=new Function('document.getElementById("Parent").removeChild('+achild+')'); 

Mais quand je le lance, le gestionnaire onclick prend feu, mais il se plaint du paramètre removeChild et montre dans le journal des erreurs de la console qu'un numéro est en cours passé en paramètre et le nombre n'est pas -1. Que puis-je faire pour dire spécifiquement à javascript de traiter 'achild' comme un objet dans tous les contextes?

Je suis à la recherche d'une solution qui fonctionne également avec les anciens navigateurs Web. Tant mieux s'il y a une solution pour IE7.

Répondre

0

Pour supprimer l'élément, utilisez la méthode elementNodeReference.remove(); qui supprime l'objet de l'arborescence à laquelle il appartient.

Essayez ceci:

var clickableobject = document.createElement('Button'); 
 
clickableobject.innerText = 'Click me'; 
 
var achild = document.getElementById("Child"); 
 
achild.appendChild(clickableobject); 
 
clickableobject.onclick = function() { 
 
    achild.remove(); 
 
}
<div ID="Parent"> 
 
    <div ID="Child"> 
 
    </div> 
 
</div>

Fiddle here

En utilisant Function constructor sans utiliser remove(), essayez ceci:

var clickableobject = document.createElement('Button'); 
 
clickableobject.innerText = 'Click me'; 
 
var achild = document.getElementById("Child"); 
 
achild.appendChild(clickableobject); 
 
clickableobject.onclick = new Function('achild.parentNode.removeChild(achild);')
<div ID="Parent"> 
 
    <div ID="Child"> 
 
    </div> 
 
</div>

Fiddle here

+0

Avant d'avoir recours à 'remove()' Je vais attendre que d'autres solutions que je suis à la recherche pour soutenir Internet Explorer 7, et selon votre lien vers la documentation sur 'Supprimons() ', est pris en charge sur IE Edge +. – Mike

+0

Et finalement je veux faire plusieurs enfants DIV chacun avec leur propre bouton qui les amène à être enlevés aussi bien. J'ai essayé votre deuxième idée en utilisant des variables représentant l'objet à enlever sans chance. – Mike

+0

qui a presque fait l'affaire, sauf qu'il a juste enlevé le bouton par lui-même, pas tout l'élément enfant qui est ce que je veux supprimer aussi bien. – Mike