Ich baue eine Lightbox als ein Schulprojekt, und ich kann jQuery nicht verwenden. Ich habe ein Bild. Wenn Sie darauf klicken, erstellt Javascript ein transparentes Div mit der ID "overlay". Ich möchte, dass das div sich selbst entfernt, oder das übergeordnete Element, um es zu entfernen, aber es funktioniert nicht. Ich denke, es hat damit zu tun, dass man "onclick" nicht mit einem Element verknüpfen kann, das es noch nicht gibt.Erstellen eines Elements, das es selbst entfernen kann?
Antwort
Sie müssen das Element aus dem übergeordneten entfernen. Etwas wie folgt aus:
d = document.getElementById('overlay');
d.parentNode.removeChild(d);
Oder Sie könnten es einfach verstecken:
d.style.display = 'none';
Und, oh: Sie können durch die Zuordnung einer Funktion zum Onclick-Attribut Javascript-Code zu einem (neu geschaffenen) Element hinzufügen.
d = document.createElement('div');
d.onclick = function(e) { this.parentNode.removeChild(this) };
Verwenden Sie nicht den Handler onclick
im Tag, verwenden Sie JavaScript-Ereignisfunktionen wie addEventListener
, um das Ereignis dynamisch zu den Elementen hinzuzufügen. Sie sollten auch sicherstellen, dass Sie beim Entfernen der Elemente alle Ihre Referenzen ordnungsgemäß bereinigen (mit anderen Worten, die Ereignishandler abmelden).
Downvote Geist Ausarbeitung? –
ich es habe :) ich tat es wie bart traurig, aber es hat nicht funktioniert. mein Code sah in etwa so aus:
image.onclick = function(){ *create overlay*};
overlay.oncklick = function() {*overlay.parentNode.removeChild(overlay)*};
der browser geht wie wtf? weil es den Code liest und denkt "Ich kann nicht überprüfen, ob der Benutzer auf ein nicht vorhandenes Element geklickt hat." Also habe ich das getan:
image.onclick = function(){
*create overlay*
overlay.onclick = function() {*remove overlay*};
};
thnx alle! – Sam
- 1. XQuery: Rückgabewert eines Elements eher das Element selbst
- 2. Das Array nach dem Entfernen eines Elements neu anordnen
- 3. Entfernen Sie inline css eines HTML-Elements
- 4. C# Wie funktioniert das Entfernen eines Elements einer ListView?
- 5. Versuch, das letzte untergeordnete Element eines untergeordneten Elements zu entfernen
- 6. Gibt es die NSMutableDictionary-Literalsyntax zum Entfernen eines Elements?
- 7. Erstellen eines Elements mit gmail.js
- 8. Entfernen eines div-Elements mit coffeescript
- 9. Entfernen eines Elements aus einer JSON-Antwort
- 10. Das Ziel eines Elements finden
- 11. ASP.NET Entfernen eines Elements aus Sitzung?
- 12. Entfernen eines Elements aus einer gefilterten ArrayCollection
- 13. Java Entfernen eines bestimmten Elements von ConcurrentHashMap
- 14. Auswählen eines Elements, das mehreren Tags entspricht
- 15. Entfernen eines Elements aus einer Liste, ohne es aus seiner Datenquelle zu entfernen - C#
- 16. Standardwerte beim Erstellen eines neuen Elements zuweisen
- 17. Entfernen eines Elements eines Arrays, entfernt alle Javascript
- 18. JQuery fadeIn() beim Erstellen eines DOM-Elements?
- 19. Selbst entfernen in lua
- 20. Wie bekomme ich das Markup eines Elements, einschließlich sich selbst mit jQuery?
- 21. Bitmap eines DOME-Elements erstellen Objective C
- 22. Die Position eines Array-Elements innerhalb des Elements selbst finden in Javascript
- 23. Gibt es eine exposed-Funktion zum Entfernen eines Elements aus einer Liste?
- 24. XSLT, um den Wert eines Elements zu entfernen
- 25. Entfernen eines übergeordneten Elements beim Klicken mit jQuery
- 26. Auswählen eines Elements innerhalb eines übergeordneten Elements eines anderen
- 27. Verbesserung des Algorithmus für das Entfernen des Elements
- 28. Entfernen eines Elements aus dem Admin-Panel von Magento Navigation
- 29. Entfernen eines ausgewählten ListView-Elements aus einer tatsächlichen Liste
- 30. Warum kann Gerrit keine Verzweigung selbst erstellen?
Das ist richtig, können Sie nicht. Setzen Sie den Haken, nachdem Sie ihn an den Körper angehängt haben. Auch Ihre Frage würde von etwas Code und Beispielen von dem, was Sie versucht haben, profitieren und genau, was schief läuft. – Dave
Können Sie bitte Ihre aktuelle HTML-Ausgabe und das Skript, das Sie verwenden, um das Overlay zu erstellen. Vielleicht können wir ein 'setTimeout' hinzufügen, wenn Sie es automatisch entfernen möchten, wenn dies möglich ist, oder wir können ein Ereignis zum übergeordneten Element hinzufügen, um es zu entfernen. Es würde es mit dem entsprechenden Code jedoch viel einfacher machen. – Nope