iT邦幫忙

0

網頁問題,使用 window.addEventListener('load'...的時機??

  • 分享至 

  • xImage

我印象中是網頁的元素以JS產生 才有需要這樣包起來
我的網頁dom全都是用html產生的
為什麼直接寫 沒有作用 一定要等待網頁載入???


說明:
我練習商品網頁
裡面有很多加入購物車的按鈕
我想要把他們加上addEventListener追蹤有沒有被點擊

然而這一條程式碼

一定要我放在 window.addEventListener('load',() => {裡面才有作用
所以我想知道這個時機是什麼?

froce iT邦大師 1 級 ‧ 2022-12-26 08:10:09 檢舉
拿錯誤的code出來,要不然誰知道你錯在哪?
一般來說很少一定要window.onload,綁定範圍太大,除非你真的要監控網頁的每一個元素而非特定元素如button類...

https://ithelp.ithome.com.tw/articles/10197335
onload的生命週期。
當我需要做動態頁面設計時,就會用到 window.addEventListener('load',() => {
我要對頁面DOM內容做增刪改,就必需要保証頁面已經完全載入且已經做完render,不然將無法更動任何DOM的內容
akajoke iT邦新手 5 級 ‧ 2022-12-27 10:58:18 檢舉
謝謝樓上兩位 雖然第一位口吻有點不客氣 但還是謝謝你給予回應喔
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2022-12-26 22:59:10
最佳解答

典型的初學著問題。

省先要先看你的JS程式碼寫在哪裏。
要先知道一件事,其HTML碼在瀏覽器下,也是一行一行讀下來的。

所以如果你的HTML如下
(以下為簡單示意)

<html>
js程式碼控制ID=A元件
......
<div id="a"></div>
</html>

當到該JS時。其實其下的A元件並還未生成。
所以這段JS依然會先運行,只是無元件可處理。導修會發生該JS無作用的情況

但當如下的寫法

<html>
window.addEventListener('load',() => ..... 控制A元件
<div id="a"></div>
</html>

其內的程式碼。會等到讀完網頁後,再會開始運行。
因為已經載入全部的網頁完成。所以自然就可以操控元件

如依以上的原則來看。那是否可以寫成如下的方式??

<html>
......
<div id="a"></div>
.....
js程式碼控制ID=A元件
</html>

答案是可以的。因為當讀取到該JS程式碼式。其實A元件已生成了。自然就可以控制了。

以上解答不知有沒有辦法讓你了解。

akajoke iT邦新手 5 級 ‧ 2022-12-27 10:58:43 檢舉

有 我理解了 因為我寫在script裡面 所以應該是先讀取到了JS
還沒跑到html

我要發表回答

立即登入回答