搜尋

首頁  >  問答  >  主體

javascript - 函數宣告和匿名函數有什麼不同? (前端小白求助。。)

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

#但是window.onload下不會報錯

高洛峰高洛峰2795 天前991

全部回覆(3)我來回復

  • 大家讲道理

    大家讲道理2017-07-05 11:01:56

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-07-05 11:01:56

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

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

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

    回覆
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-07-05 11:01:56

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

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

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

    回覆
    0
  • 取消回覆