137 votes

Comment faire pour supprimer un élément HTML à l'aide de Javascript?

Je suis un débutant total. Quelqu'un peut-il me dire comment faire pour supprimer un élément html à l'aide de l'original javascript jQuery.

index.html

<html>
<head>
 <script type="text/javascript" src="myscripts.js" > </script>
 <style>
 #dummy {
  min-width: 200px;
  min-height: 200px;
  max-width: 200px;
  max-height: 200px;
  background-color: #fff000;
 }
 </style>
</head>
<body>
 <div id="dummy"></div>

 <form>
  <input type="submit" value="Remove DUMMY" onclick="removeDummy(); "/>
 </form>
</body>

myscripts.js

function removeDummy() {
 var elem = document.getElementById('dummy');
 elem.parentNode.removeChild(elem);
}

Ce qui se passe quand je clique sur le bouton submit, il va disparaître pour un très court laps de temps et s'affiche immédiatement. Je veux supprimer complètement l'élément lorsque je clique sur le bouton.

201voto

T.J. Crowder Points 285826

Ce qui se passe est que le formulaire de soumission, et alors que la page est en cours d'actualisation (avec son contenu d'origine). Vous êtes la manipulation de l' click événement sur un bouton de soumission.

Si vous souhaitez supprimer l'élément et de ne pas soumettre le formulaire, gérer l' submit événement sur la forme au lieu, et de revenir false à partir de votre gestionnaire de:

HTML:

<form  onsubmit="return removeDummy(); ">
    <input type="submit" value="Remove DUMMY"/>
</form>

JavaScript:

function removeDummy() {
    var elem = document.getElementById('dummy');
    elem.parentNode.removeChild(elem);
    return false;
}

Mais vous n'avez pas besoin (ou envie) d'un formulaire pour ça, pas si son seul but est de supprimer le mannequin div. Au lieu de cela:

HTML:

<input type="button" value="Remove DUMMY" onclick="removeDummy()" />

JavaScript:

function removeDummy() {
    var elem = document.getElementById('dummy');
    elem.parentNode.removeChild(elem);
    return false;
}

Cependant, ce style de mise en place de gestionnaires d'événements est à l'ancienne. Vous semblez avoir un bon instinct dans votre code JavaScript est dans son propre fichier, par exemple. La prochaine étape est de prendre plus loin et éviter d'utiliser des onXYZ attributs pour l'accrochage des gestionnaires d'événements. Au lieu de cela, dans votre JavaScript, vous pouvez les connecter avec la plus récente (vers l'an 2000) de façon à la place:

HTML:

<input id='btnRemoveDummy' type="button" value="Remove DUMMY"/>

JavaScript:

function removeDummy() {
    var elem = document.getElementById('dummy');
    elem.parentNode.removeChild(elem);
    return false;
}
function pageInit() {
    // Hook up the "remove dummy" button
    var btn = document.getElementById('btnRemoveDummy');
    if (btn.addEventListener) {
        // DOM2 standard
        btn.addEventListener('click', removeDummy, false);
    }
    else if (btn.attachEvent) {
        // IE (IE9 finally supports the above, though)
        btn.attachEvent('onclick', removeDummy);
    }
    else {
        // Really old or non-standard browser, try DOM0
        btn.onclick = removeDummy;
    }
}

...puis appelez pageInit(); d'un script balise à la fin de votre page body (juste avant la clôture </body> tag), ou à partir de l' window load événement, bien que cela arrive très tard dans le cycle de chargement de la page et donc en général n'est pas bon pour l'accrochage des gestionnaires d'événements (il arrive après toutes les images ont finalement embarqué, par exemple).

Note que j'ai eu à faire quelques manipulation afin de composer avec les différences de navigateurs. Vous aurez probablement envie d'une fonction permettant de raccorder des événements de sorte que vous n'avez pas à répéter cette logique à chaque fois. Ou envisager d'utiliser une librairie comme jQuery, Prototype, YUI, de Fermetureou de plusieurs autres , pour aplanir ces différences de navigateurs pour vous. Il est très important de comprendre les sous-jacents de trucs en cours, à la fois en termes de JavaScript fondamentaux et DOM fondamentaux, mais les bibliothèques de traiter avec beaucoup d'incohérences, et également fournir beaucoup de pratique utilitaires — comme un moyen d'accrochage des gestionnaires d'événements qui traite avec les différences de navigateurs. La plupart d'entre eux fournissent également un moyen de mettre en place une fonction (comme pageInit) pour s'exécuter dès que le DOM est prêt à être manipulé, longtemps avant window load des incendies.

38voto

Muhammad Umer Points 553

Viens de le faire element.remove();

Essayer ici LOOK

http://jsfiddle.net/4WGRP/

9voto

Coder Hawk Points 2344

Vous devez utiliser input type="button" au lieu de input type="submit".

<form>
  <input type="button" value="Remove DUMMY" onclick="removeDummy(); "/>
 </form>

La caisse Mozilla Developer Center de base de html et de javascript ressources

8voto

Pav Points 1107

Votre JavaScript est correct. Votre bouton a type="submit" qui est à l'origine de la page pour actualiser.

5voto

mVChr Points 26738

Il réapparaît parce que votre bouton envoyer recharge la page. La façon la plus simple pour éviter ce problème est d'ajouter un return false de la onclick comme:

<input type="submit" value="Remove DUMMY" onclick="removeDummy(); return false;" />

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X