iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0

今天要來講解 DOM 與 this 的關係,

對於 DOM 的操作有兩種方式,

第一種是直接將方法寫在元素上,

首先我們先準備一個 button

<button>按鈕</button>

之後直接將方法寫在該元素上

<button onclick = 'console.log(this)'>按鈕</button>

此時我們按下 按鈕,會直接觸發 click 事件,該事件為顯示 this

此時的 this 會將當前綁定元素的所有標籤內容都顯示出來,

當我們只想看綁定的 DOM 時,可以將 log 改成 dir

<button onclick = 'console.dir(this)'>按鈕</button>

我們按下 按鈕 時,此時的 this 會顯示當前綁定的 DOM,

而這時就會是一個單純的物件,其內部能看見有哪些屬性能使用

而第二種方式是使用 addEventListener 的方式來監聽

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
</ul>

<script>
var fn = function() {
    console.dir(this);
    this.style.backgroundColor = 'lightblue';
}

var els = document.querySelectorAll('li');

for (var i = 0; i < els.length; i++) {
    els[i].addEventListener('click', fn);
}
</script>

該範例是使用 querySelectorAll 來選取所有 li 標籤,

我們使用 for 迴圈將每個 li 都補上監聽器,而監聽方法為 click

因此當我們點擊 li 時,就會執行 fn 這個函式,

該函式會將我們所點擊 li 的背景顏色改變,

並且會在 Console 顯示該元素的物件,

而此時的 this 會指向觸發事件的元素

因此我們可以得知在 DOM 事件監聽中的 this

會指向原本觸發事件的元素

以上就是今天的內容,感謝觀看!!


上一篇
【Day28】this - call, apply, bind 與嚴謹模式
下一篇
【Day30】函式常見的陷阱題
系列文
JavaScript 核心觀念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言