Js引入問題-Uncaught TypeError: Cannot read property 'appendChild' of undefined的分析與解決


在這里插入圖片描述
     <head>內引入外部Js ,報錯出異常,顯示Uncaught TypeError: Cannot read property 'appendChild' of undefined,屬性未定義。為什么出現這種問題。查找很久發現這跟Js、DOM加載順序有關,由於寫在了<head>內,它會先執行,但是此時由於DOM還未加載完,而Js里有需要獲取DOM中元素的語句要執行,這時就會出現異常,Js報錯Uncaught TypeError: Cannot read property 'appendChild' of undefined,無法讀取未定義的屬性'appendChild'。

在這里插入圖片描述

     解決方法很簡單,將Js的外部文件引入放在<body>中就行,讓整個頁面加載完后再執行Js就不會出現無法讀取的問題了。(如果是內部Js的話,還可以使用window.onload = function(){} 代碼包裹,也是在文檔加載之后再執行)


---------------------------------------------------------------這是分割線------------------------------------------------------------

這里再(復習)補充一下Js知識:

    <head>內的Js可能會阻塞頁面的傳輸和頁面的渲染,也就是在<head>內的Js一般要先執行完后,才開始渲染body頁面。所以盡量不要將 JS 文件放在 head 內。可以選擇在 DOM完成時,或者特定區塊后引入和執行 JavaScript。

    所以為了避免<head>內引入的Js會阻塞頁面的傳輸和頁面的渲染,一般原則是,樣式在前面,DOM文檔,腳本在最后面。遵循先解析再渲染再執行Javascript這個順序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM