javascript - 函數宣告和匿名函數有什麼不同? (前端小白求助。。)
高洛峰
高洛峰 2017-07-05 10:59:56
0
3
942

用函數宣告的方式定義了一個改變元素style屬性的函數會報錯

#但是window.onload下不會報錯

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(3)
大家讲道理

寶寶 這個跟你用什麼函數沒關係!是因為onload會把文件載入完才觸發 而你一定是因為文件沒載入完 沒找到元素 所以才報錯 把js放到元素下面

洪涛

這和函數宣告和匿名沒有關係,而是和函數的呼叫時機有關係。
改成這樣,還能找到和匿名函數的問題麼?

function change () { /* ... */ }
window.onload = change

前者在調用時,box元素還沒有,所以報了錯;後者在DOM ready後調用,所以可以執行。你可以在change函數中log一下box物件看看。

扔个三星炸死你

問題不是這個,你需要知道文檔是從上到下加載的,你把js文件放在了head
執行到js文件的時候,這個時候連body都還沒加載,自然無法獲取到box ,也就無法設定css了。
你可以把js檔案放到body的尾部:

.
.
.
<script src="./x.js"></script>
</body>

這樣就不需要window.onload
如果放在了head裡面
就需要在js檔案頭部寫window.onload=function(){......}

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板