Sì, sostanzialmente quello che hai fatto è giusto, tranne che dimentichi che JavaScript è sincronizzato in molti casi, quindi esegui il codice prima che il DOM venga caricato, ci sono alcuni modi per risolverlo:
1) Verifica se DOM è completamente caricato, quindi fai quello che vuoi, ad esempio puoi ascoltare DOMContentLoaded :
<script>
document.addEventListener("DOMContentLoaded", function(event) {
console.log("DOM fully loaded and parsed");
});
</script>
2) Un modo molto comune è l'aggiunta del tag script nella parte inferiore del tuo document
(dopo il tag body):
<html>
<head>
</head>
<body>
</body>
<script src="/bundle.js"></script>
</html>
3) Utilizzo window.onload
, che viene generato quando l'intera pagina viene caricata (img, ecc.)
window.addEventListener("load", function() {
console.log("Everything is loaded");
});
4) Utilizzo document.onload
, che viene attivato quando il DOM è pronto:
document.addEventListener("load", function() {
console.log("DOM is ready");
});
Esistono ancora più opzioni per verificare se DOM è pronto, ma la risposta breve è NON eseguire alcuno script prima di assicurarsi che il DOM sia pronto in ogni caso ...
JavaScript funziona insieme agli elementi DOM e, se non sono disponibili, restituirà null , potrebbe interrompere l'intera applicazione ... quindi assicurati sempre di essere pronto per eseguire il tuo JavaScript prima di farlo ...