?????在<head>
內(nèi)引入外部Js 笆搓,報錯出異常性湿,顯示Uncaught TypeError: Cannot read property 'appendChild' of undefined,屬性未定義满败。為什么出現(xiàn)這種問題肤频。查找很久發(fā)現(xiàn)這跟Js、DOM加載順序有關(guān)算墨,由于寫在了<head>
內(nèi)宵荒,它會先執(zhí)行,但是此時由于DOM還未加載完,而Js里有需要獲取DOM中元素的語句要執(zhí)行报咳,這時就會出現(xiàn)異常侠讯,Js報錯Uncaught TypeError: Cannot read property 'appendChild' of undefined,無法讀取未定義的屬性'appendChild'暑刃。
?????解決方法很簡單厢漩,將Js的外部文件引入放在<body>
中就行,讓整個頁面加載完后再執(zhí)行Js就不會出現(xiàn)無法讀取的問題了岩臣。(如果是內(nèi)部Js的話溜嗜,還可以使用window.onload = function(){} 代碼包裹,也是在文檔加載之后再執(zhí)行)
-------------------------------------------這是分割線------------------------------------------------
這里再(復(fù)習(xí))補充一下Js知識:
????<head>
內(nèi)的Js可能會阻塞頁面的傳輸和頁面的渲染架谎,也就是在<head>
內(nèi)的Js一般要先執(zhí)行完后炸宵,才開始渲染body頁面。所以盡量不要將 JS 文件放在 head 內(nèi)谷扣”貉梗可以選擇在 DOM完成時,或者特定區(qū)塊后引入和執(zhí)行 JavaScript抑钟。
????所以為了避免<head>
內(nèi)引入的Js會阻塞頁面的傳輸和頁面的渲染,一般原則是野哭,樣式在前面在塔,DOM文檔,腳本在最后面拨黔。遵循先解析再渲染再執(zhí)行Javascript這個順序蛔溃。