हां, मूल रूप से आपने जो किया वह सही है, सिवाय इसके कि आप भूल जाते हैं कि जावास्क्रिप्ट कई मामलों में सिंक है, इसलिए आप अपने DOM से पहले कोड चला रहे हैं लोड रहे हैं, इसे हल करने के कुछ तरीके हैं:
1) यह देखने के लिए जांचें कि क्या DOM पूरी तरह से भरा हुआ है, फिर आप जो चाहें करें, आप उदाहरण के लिए DOMContentLoaded सुन सकते हैं :
<script>
document.addEventListener("DOMContentLoaded", function(event) {
console.log("DOM fully loaded and parsed");
});
</script>
2) बहुत सामान्य तरीका है स्क्रिप्ट टैग को आपके documentशरीर के निचले भाग (बॉडी टैग के बाद) में जोड़ना :
<html>
<head>
</head>
<body>
</body>
<script src="/bundle.js"></script>
</html>
3) का उपयोग करना window.onload, जो पूरे पृष्ठ लोड होने पर निकाल दिया जाता है (img, आदि)
window.addEventListener("load", function() {
console.log("Everything is loaded");
});
4) का उपयोग करते हुए document.onload, जो डोम तैयार होने पर निकाल दिया जाता है:
document.addEventListener("load", function() {
console.log("DOM is ready");
});
यह जाँचने के लिए और भी विकल्प हैं कि DOM तैयार है या नहीं, लेकिन संक्षिप्त उत्तर यह नहीं है कि कोई भी स्क्रिप्ट चलाने से पहले यह सुनिश्चित करें कि आपका DOM हर मामले में तैयार है ...
जावास्क्रिप्ट डोम तत्वों के साथ काम कर रहा है और अगर वे उपलब्ध नहीं हैं, तो अशक्त हो जाएगा, पूरे आवेदन को तोड़ सकता है ... इसलिए हमेशा सुनिश्चित करें कि आप अपने जावास्क्रिप्ट को चलाने से पहले पूरी तरह से तैयार हैं ...