Ich bin ein totaler Neuling. Kann mir jemand sagen, wie man ein HTML-Element mit dem ursprünglichen Javascript entfernt, nicht mit 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);
}
Wenn ich auf die Schaltfläche "Senden" klicke, verschwindet diese für sehr kurze Zeit und wird dann sofort wieder angezeigt. Ich möchte das Element vollständig entfernen, wenn ich auf die Schaltfläche klicke.
javascript
html
Newbie Coder
quelle
quelle
Antworten:
Was passiert ist, dass das Formular gesendet wird und die Seite (mit ihrem ursprünglichen Inhalt) aktualisiert wird. Sie behandeln das
click
Ereignis über eine Senden-Schaltfläche.Wenn Sie das Element entfernen und das Formular nicht senden möchten , behandeln Sie
submit
stattdessen das Ereignis im Formular und kehren Siefalse
von Ihrem Handler zurück:HTML:
JavaScript:
Aber Sie brauchen (oder wollen) dafür überhaupt kein Formular, nicht wenn der einzige Zweck darin besteht, das Dummy-Div zu entfernen. Stattdessen:
HTML:
JavaScript:
Diese Art der Einrichtung von Ereignishandlern ist jedoch altmodisch. Sie scheinen einen guten Instinkt dafür zu haben, dass sich Ihr JavaScript-Code in einer eigenen Datei befindet und so weiter. Der nächste Schritt besteht darin, weiter zu gehen und die Verwendung von
onXYZ
Attributen zum Anschließen von Ereignishandlern zu vermeiden . Stattdessen können Sie sie in Ihrem JavaScript mit der neueren Methode (ca. 2000) verbinden:HTML:
JavaScript:
... rufen Sie dann
pageInit();
von einemscript
Tag ganz am Ende Ihrer Seitebody
(kurz vor dem schließenden</body>
Tag) oder aus demwindow
load
Ereignis heraus auf, obwohl dies sehr spät im Ladezyklus der Seite geschieht und daher normalerweise nicht zum Anschließen eines Ereignisses geeignet ist Handler (dies geschieht zum Beispiel, nachdem alle Bilder endgültig geladen wurden).Beachten Sie, dass ich einige Handhabungen vornehmen musste, um mit Browserunterschieden umzugehen. Sie möchten wahrscheinlich eine Funktion zum Anschließen von Ereignissen, damit Sie diese Logik nicht jedes Mal wiederholen müssen. Oder verwenden Sie eine Bibliothek wie jQuery , Prototype , YUI , Closure oder eine von mehreren anderen , um diese Browserunterschiede für Sie auszugleichen. Es ist sehr wichtig , die zugrunde liegenden Dinge zu verstehen, sowohl in Bezug auf JavaScript-Grundlagen als auch in Bezug auf DOM-Grundlagen, aber Bibliotheken haben mit vielen Inkonsistenzen zu tun und bieten auch viele nützliche Dienstprogramme - wie ein Mittel zum Anschließen von Event-Handlern, die sich damit befassen Browserunterschiede. Die meisten von ihnen bieten auch die Möglichkeit, eine Funktion einzurichten (z
pageInit
) ausgeführt werden, sobald das DOM manipulationsbereit ist, lange bevor eswindow
load
ausgelöst wird.quelle
type="button"
oder setzen Siereturn false;
Ihre JS-Funktion einonxyz
Eigenschaft des Elements zuweisen ), ist nur ein einziger Handler zulässig. Wenn Sie der Eigenschaft zuweisen, ersetzen Sie alles, was früher vorhanden war, sodass es nicht gut mit anderen funktioniert. (Fortsetzung)Mach das einfach
element.remove();
Probieren Sie es hier aus
http://jsfiddle.net/4WGRP/
quelle
.remove()
Sie sollten den Eingabetyp = "button" anstelle des Eingabetyps = "submit" verwenden.
Testen Sie das Mozilla Developer Center auf grundlegende HTML- und Javascript-Ressourcen
quelle
Ihr JavaScript ist korrekt. Ihre Schaltfläche hat
type="submit"
, wodurch die Seite aktualisiert wird.quelle
Es wird erneut angezeigt, da die Schaltfläche "Senden" die Seite neu lädt. Der einfachste Weg, um dieses Verhalten zu verhindern, besteht darin
return false
, demonclick
Ähnlichen Folgendes hinzuzufügen :quelle
Ändern Sie den Eingabetyp in "Schaltfläche". Wie TJ und Pav sagten, wird das Formular eingereicht. Dein Javascript sieht korrekt aus und ich empfehle dir, dass du es ohne JQuery ausprobiert hast :)
quelle
index.html
myscripts.js
quelle
Das ist der richtige Code. Was wahrscheinlich passiert, ist, dass Ihr Formular gesendet wird und Sie die neue Seite sehen (auf der das Element wieder vorhanden sein wird).
quelle
Versuchen Sie, diesen Code in Ihrem Skript auszuführen .
Und es wird hoffentlich das Element / die Schaltfläche entfernen.
quelle
Das funktioniert. Entfernen
div
Sie einfach die Schaltfläche aus dem "Dummy", wenn Sie die Schaltfläche behalten möchten.quelle
Ich bin auch noch ein Neuling, aber hier ist ein einfacher und einfacher Weg: Sie können OuterHTML verwenden, das ist das ganze Tag, nicht nur ein Teil:
EX:
<tag id='me'>blahblahblah</tag>
's innerHTML wäreblahblahblah
und OuterHTML wäre das Ganze<tag id='me'>blahblahblah</tag>
.Wenn Sie beispielsweise das Tag löschen möchten, werden im Grunde genommen die Daten gelöscht. Wenn Sie also die äußere HTML in eine leere Zeichenfolge ändern, ist dies wie das Löschen.
Wenn Sie es stattdessen einfach nicht anzeigen möchten, können Sie es in JS mithilfe der Eigenschaften für Sichtbarkeit, Deckkraft und Anzeige formatieren.
Beachten Sie,
opacity
dass das Element weiterhin angezeigt wird, Sie es jedoch nicht so oft sehen können. Sie können auch Text auswählen, kopieren, einfügen und alles tun, was Sie normalerweise tun könnten, obwohl es unsichtbar ist.Visibility
passt besser zu Ihrer Situation, lässt jedoch einen leeren transparenten Bereich übrig, der so groß ist wie das Element, auf das er angewendet wurde.Ich würde empfehlen, dass Sie anzeigen, je nachdem, wie Sie Ihre Webseite erstellen. Zeigen Sie an, dass das Element grundsätzlich aus Ihrer Ansicht gelöscht wird, Sie können es jedoch weiterhin in DevTools anzeigen. Hoffe das hilft!
quelle