Sto costruendo un lightbox come progetto scolastico e non posso usare jQuery. Ho un'immagine Quando lo fai clic, Javascript crea un div trasparente con l'ID "overlay". Voglio che il div si rimuova o che il genitore lo rimuova ma non funziona. Penso che abbia a che fare con il fatto che non puoi collegare "onclick" a un elemento che non esiste ancora.Creazione di un elemento che può rimuoverlo da solo?
risposta
È necessario rimuovere l'elemento dal genitore. Qualcosa di simile a questo:
d = document.getElementById('overlay');
d.parentNode.removeChild(d);
Oppure si potrebbe semplicemente nasconderlo:
d.style.display = 'none';
E, oh: è possibile aggiungere codice Javascript ad un elemento (appena creato) assegnando una funzione per l'attributo onclick.
d = document.createElement('div');
d.onclick = function(e) { this.parentNode.removeChild(this) };
Non utilizzare il gestore onclick
nel tag, utilizzare le funzioni di evento Javascripts come addEventListener
per aggiungere dinamicamente l'evento agli elementi. Dovresti anche assicurarti che quando rimuovi gli elementi pulisci correttamente tutti i tuoi riferimenti (in altre parole, annulla la registrazione dei gestori di eventi).
La mente downvote sta elaborando? –
li ho :) lo facevo come Bart triste, ma non ha funzionato. il mio codice era simile al seguente:
image.onclick = function(){ *create overlay*};
overlay.oncklick = function() {*overlay.parentNode.removeChild(overlay)*};
il browser funziona come wtf? perché legge il codice e pensa "Non posso controllare se l'utente ha fatto clic su un elemento non esistente." Quindi ho fatto questo:
image.onclick = function(){
*create overlay*
overlay.onclick = function() {*remove overlay*};
};
thnx a tutti! – Sam
- 1. app node.js che può riavviarsi da solo
- 2. Posso ottenere un oggetto da un PriorityQueue senza rimuoverlo?
- 3. Crea un utente che può solo VEDERE un database e selezionarlo solo da esso?
- 4. GroupBox in WPF può contenere solo un elemento?
- 5. riferimento ad un elemento da id da solo, senza document.getElementById
- 6. Come nascondere solo un elemento opzione usando solo css
- 7. Creazione di un elenco con elemento ripetuto
- 8. Creazione di una proprietà che LINQ to Entities può tradurre
- 9. Java 8 Stream possono operare su un elemento di una raccolta e quindi rimuoverlo?
- 10. E 'possibile trovare un elemento in un Vec <T> e rimuoverlo?
- 11. jQuery - ottenere la prima classe solo da un elemento
- 12. Comprimi un elemento quando espandi un altro elemento solo css
- 13. Utilizzo di un UINavigationViewController da solo
- 14. Come può un linguaggio essere interpretato da solo (come Rubinius)?
- 15. Seleziona un elemento casuale da un array e rimuovilo
- 16. overflow solo un elemento in un DIV
- 17. Creazione di un programma che deve essere trasmesso da avahi
- 18. Creazione di un processo da un driver
- 19. puoi disabilitare un listener di eventi senza rimuoverlo?
- 20. sottoallineamento solo testo sotto un elemento
- 21. Creazione di XML che stampa solo su una riga
- 22. Creazione di una proprietà che può generare IndexOutOfRangeException
- 23. Linux C - implementazione della capacità che un programma può aggiornare da solo
- 24. Come richiedere che un protocollo può essere adottato solo da una classe specifica
- 25. MongodDB $ tirare solo elemento dall'array
- 26. Come arrivare RelayJS per capire che una risposta da GraphQL è un array di oggetti, non solo un singolo elemento
- 27. Creazione Recurly BillingInfo utilizzando solo un token_id
- 28. Doppio bordo con un solo elemento
- 29. Avvio dell'applicazione da Notifica rimuoverlo dalla cronologia delle ultime app
- 30. Solo selezionare un solo pulsante di opzione da listview
Esatto, non è possibile. Quindi imposta il gancio dopo averlo aggiunto al corpo. Anche la tua domanda trarrebbe beneficio da alcuni codici ed esempi di ciò che hai provato, e esattamente da cosa sta andando male. – Dave
Per favore, puoi pubblicare il tuo output HTML corrente e Script per favore usi la creazione dell'overlay. Forse possiamo aggiungere un 'setTimeout' se vuoi rimuoverlo automaticamente in base ad un certo lasso di tempo passato se ciò è fattibile o possiamo aggiungere un evento all'elemento genitore per rimuoverlo. Tuttavia, renderebbe molto più semplice con il codice pertinente. – Nope