用函數宣告的方式定義了一個改變元素style屬性的函數會報錯
#但是window.onload下不會報錯
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
寶寶 這個跟你用什麼函數沒關係!是因為onload會把文件載入完才觸發 而你一定是因為文件沒載入完 沒找到元素 所以才報錯 把js放到元素下面
這和函數宣告和匿名沒有關係,而是和函數的呼叫時機有關係。 改成這樣,還能找到和匿名函數的問題麼?
function change () { /* ... */ } window.onload = change
前者在調用時,box元素還沒有,所以報了錯;後者在DOM ready後調用,所以可以執行。你可以在change函數中log一下box物件看看。
問題不是這個,你需要知道文檔是從上到下加載的,你把js文件放在了head裡執行到js文件的時候,這個時候連body都還沒加載,自然無法獲取到box ,也就無法設定css了。 你可以把js檔案放到body的尾部:
head
body
. . . <script src="./x.js"></script> </body>
這樣就不需要window.onload了如果放在了head裡面就需要在js檔案頭部寫window.onload=function(){......}
window.onload
window.onload=function(){......}
寶寶 這個跟你用什麼函數沒關係!是因為onload會把文件載入完才觸發 而你一定是因為文件沒載入完 沒找到元素 所以才報錯 把js放到元素下面
這和函數宣告和匿名沒有關係,而是和函數的呼叫時機有關係。
改成這樣,還能找到和匿名函數的問題麼?
前者在調用時,box元素還沒有,所以報了錯;後者在DOM ready後調用,所以可以執行。你可以在change函數中log一下box物件看看。
問題不是這個,你需要知道文檔是從上到下加載的,你把js文件放在了
head
裡執行到js文件的時候,這個時候連body都還沒加載,自然無法獲取到box ,也就無法設定css了。
你可以把js檔案放到
body
的尾部:這樣就不需要
window.onload
了如果放在了head裡面
就需要在js檔案頭部寫
window.onload=function(){......}