javascript - 函數(shù)聲明和匿名函數(shù)有什么不同?(前端小白求助。。)
問題描述
用函數(shù)聲明的方式定義了一個(gè)改變?cè)豷tyle屬性的函數(shù)會(huì)報(bào)錯(cuò)
但是window.onload下不會(huì)報(bào)錯(cuò)
問題解答
回答1:寶寶 這個(gè)和你用什么函數(shù)沒關(guān)系!是因?yàn)閛nload會(huì)把文檔加載完才觸發(fā) 而你肯定是因?yàn)槲臋n沒加載完 沒找到元素 所以才報(bào)錯(cuò) 把js放到元素下面
回答2:這和函數(shù)聲明和匿名沒有關(guān)系,而是和函數(shù)的調(diào)用時(shí)機(jī)有關(guān)系。改成這樣,還能找到和匿名函數(shù)的問題么?
function change () { /* ... */ }window.onload = change
前者在調(diào)用時(shí),box元素還沒有,所以報(bào)了錯(cuò);后者在DOM ready后調(diào)用,所以可以執(zhí)行。你可以在change函數(shù)中l(wèi)og一下box對(duì)象看看。
回答3:問題不是這個(gè),你需要知道文檔是從上到下加載的,你把js文件放在了head里執(zhí)行到j(luò)s文件的時(shí)候,這個(gè)時(shí)候連body都還沒加載,自然無法獲取到box,也就無法設(shè)置css了。你可以把js文件放到body的尾部:
...<script src='http://www.lshqa.cn/wenda/x.js'></script></body>
這樣就不需要window.onload了如果放在了head里面就需要在js文件頭部寫window.onload=function(){......}
相關(guān)文章:
1. Python爬蟲如何爬取span和span中間的內(nèi)容并分別存入字典里?2. mysql - 把一個(gè)表中的數(shù)據(jù)count更新到另一個(gè)表里?3. 請(qǐng)教使用PDO連接MSSQL數(shù)據(jù)庫插入是亂碼問題?4. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會(huì)帶來哪些效率或者其他方面的好處5. visual-studio - Python OpenCV: 奇怪的自動(dòng)補(bǔ)全問題6. 視頻文件不能播放,怎么辦?7. mysql 查詢身份證號(hào)字段值有效的數(shù)據(jù)8. python - 《flask web 開發(fā)》一書,數(shù)據(jù)庫中多對(duì)多關(guān)系的實(shí)現(xiàn)問題?9. node.js - nodejs開發(fā)中常用的連接mysql的庫10. python - 爬蟲模擬登錄后,爬取csdn后臺(tái)文章列表遇到的問題
