Ho bisogno di ottenere/contare quanti elementi con un nome di classe comune target
sono "disponibili". Nessuno su questi elementi esiste fisicamente nel DOM. Questi elementi sono stati aggiunti in seguito quando la pagina è stata caricata completamente.Come ottenere tutti i selettori in base al nome della classe che sono stati aggiunti dinamicamente in JavaScript vanilla?
seguito
var targets = document.getElementsByClassName('target);
quando ho console.log(targets);
ottengo[]
.
Quando clicco quelle parentesi quadre, si espandono e target
elementi sembra apparire, ma accanto a loro c'è un messaggio:
Valore oggetto a sinistra era snapshotted quando connesso, valore al di sotto è stato valutata solo ora.
quindi immagino che ho fatto quando console.log
DOM non è stato popolato con target
elementi ancora. Come posso ottenere informazioni sugli elementi aggiunti dinamicamente?
EDIT:
Ho controllato le funzioni di HSH e
document.body.addEventListener('DOMSubtreeModified', function(event) {
var targets = document.getElementsByClassName('target');
console.log(targets.length);
/**
* If I have 40 target elements, this will be called 40 times :/ showing first bunch of zeros then finally number will reach to 40
*/
});
/**
* So this would be ideally (called only once) but this always shows empty array and 0
*/
document.addEventListener('DOMContentLoaded', function(event) {
var targets = document.getElementsByClassName('marker');
console.log(targets); // always shows []
console.log(targets.length); // always shows 0
//while I can play with those target selectors in Chrome Dev Tools
});
PS. No jQuery per favore.
Includi lo script come l'ultima cosa nel tag '
'. In questo modo il Dom ha eseguito il rendering prima di eseguire il tuo script. – jh3y@ jh3y - Questo non accetterà alcuno che sia stato aggiunto dinamicamente (a meno che lo script che li aggiunge sia eseguito prima che questo * e * non sia asincrono) ... che è quello a cui si pone la domanda. – Quentin
Esattamente! @Quentin ha ragione! Questo è il punto. Per catturare cose aggiunte dinamicamente. – slick