Je suis un novice total. Quelqu'un peut-il me dire comment supprimer un élément HTML en utilisant le Javascript d'origine et non 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 lorsque je clique sur le bouton Soumettre, c'est qu'il disparaîtra pendant très très peu de temps, puis réapparaîtra immédiatement. Je souhaite supprimer complètement l'élément lorsque je clique sur le bouton.
javascript
html
Codeur débutant
la source
la source
Réponses:
Ce qui se passe, c'est que le formulaire est soumis et que la page est en cours d'actualisation (avec son contenu d'origine). Vous gérez le
click
événement sur un bouton d'envoi.Si vous souhaitez supprimer l'élément et ne pas soumettre le formulaire, gérez
submit
plutôt l' événement sur le formulaire et renvoyez-lefalse
depuis votre gestionnaire:HTML:
JavaScript:
Mais vous n'avez pas du tout besoin (ou ne voulez) pas d'un formulaire pour cela, pas si son seul but est de supprimer le div factice. Au lieu:
HTML:
JavaScript:
Cependant , ce style de configuration des gestionnaires d'événements est démodé. Vous semblez avoir un bon instinct dans la mesure où votre code JavaScript est dans son propre fichier et autres. L'étape suivante consiste à aller plus loin et à éviter d'utiliser des
onXYZ
attributs pour connecter des gestionnaires d'événements. Au lieu de cela, dans votre JavaScript, vous pouvez les connecter avec la méthode la plus récente (vers l'an 2000) à la place:HTML:
JavaScript:
... puis appelez à
pageInit();
partir d'unescript
balise à la toute fin de votre pagebody
(juste avant la</body>
balise de fermeture ), ou à partir de l'window
load
événement, bien que cela se produise très tard dans le cycle de chargement de la page et ne soit donc généralement pas bon pour connecter l'événement handlers (cela se produit après que toutes les images ont finalement été chargées, par exemple).Notez que j'ai dû faire quelques manipulations pour gérer les différences de navigateur. Vous voudrez probablement une fonction pour connecter des événements afin de ne pas avoir à répéter cette logique à chaque fois. Ou pensez à utiliser une bibliothèque telle que jQuery , Prototype , YUI , Closure ou l' une des autres pour atténuer ces différences de navigateur pour vous. Il est très important de comprendre ce qui se passe sous-jacent, à la fois en termes de principes fondamentaux de JavaScript et de fondamentaux DOM, mais les bibliothèques traitent de nombreuses incohérences et fournissent également de nombreux utilitaires pratiques - comme un moyen de connecter des gestionnaires d'événements qui traitent de différences de navigateur. La plupart d'entre eux fournissent également un moyen de configurer une fonction (comme
pageInit
) à exécuter dès que le DOM est prêt à être manipulé, bien avant leswindow
load
incendies.la source
type="button"
ou mettez-lereturn false;
dans votre fonction JSonxyz
propriété sur l'élément) n'autorise qu'un seul gestionnaire, et si vous affectez à la propriété, vous remplacez ce qui s'y trouvait auparavant, de sorte qu'il ne joue pas bien avec les autres. (suite)Fais juste ça
element.remove();
Essayez-le ici LOOK
http://jsfiddle.net/4WGRP/
la source
.remove()
Vous devez utiliser input type = "button" au lieu de input type = "submit".
Consultez le Centre de développement Mozilla pour les ressources HTML et JavaScript de base
la source
Votre JavaScript est correct. Votre bouton
type="submit"
provoque l'actualisation de la page.la source
Il réapparaît car votre bouton d'envoi recharge la page. La façon la plus simple pour éviter ce comportement est d'ajouter un
return false
à laonclick
façon:la source
Changez le type d'entrée en "bouton". Comme l'ont dit TJ et Pav, le formulaire est en train d'être soumis. Votre Javascript semble correct, et je vous félicite de l'avoir essayé de manière non-JQuery :)
la source
index.html
myscripts.js
la source
C'est le bon code. Ce qui se passe probablement, c'est que votre formulaire est en cours d'envoi et que vous voyez la nouvelle page (où l'élément existera à nouveau).
la source
Essayez d'exécuter ce code dans votre script .
Et cela supprimera, espérons-le, l'élément / bouton.
la source
Cela marche. Retirez simplement le bouton du «mannequin»
div
si vous souhaitez conserver le bouton.la source
Je suis encore un débutant aussi, mais voici un moyen simple et facile: vous pouvez utiliser externalHTML, qui est la balise entière, pas seulement une partie:
EX:
<tag id='me'>blahblahblah</tag>
de » innerHTML seraitblahblahblah
, et outerHTML serait la chose,<tag id='me'>blahblahblah</tag>
.Donc, pour l'exemple, si vous voulez supprimer la balise, c'est essentiellement la suppression de ses données, donc si vous changez le externalHTML en une chaîne vide, c'est comme la supprimer.
Au lieu de cela, si vous souhaitez simplement ne pas l'afficher, vous pouvez le styliser dans JS en utilisant les propriétés de visibilité, d'opacité et d'affichage.
Notez que
opacity
l'élément s'affiche toujours, mais vous ne pouvez pas le voir autant. En outre, vous pouvez sélectionner du texte, copier, coller et faire tout ce que vous pouvez faire normalement, même s'il est invisible.Visibility
s'adapte davantage à votre situation, mais il laissera un espace transparent vide aussi grand que l'élément auquel il a été appliqué.Je vous recommanderais d'afficher, en fonction de la façon dont vous créez votre page Web. Display supprimant essentiellement l'élément de votre vue, mais vous pouvez toujours le voir dans DevTools. J'espère que cela t'aides!
la source