我在 JS 中向 HTML 元素添加類時遇到問題。我想創建某種手風琴,但我不知道我做錯了什么(首先我應該說我對 JS 沒有太多經驗)。我正在使用的 HTML 元素如下所示:<div class="account_content_orders_list_order"> <div class="account_content_orders_list_order_element"></div> <div class="account_content_orders_list_order_element"></div> <div class="account_content_orders_list_order_element"></div> <div class="account_content_orders_list_order_element"></div> <div class="account_content_orders_list_order_element"></div> <div class="account_content_orders_list_order_element"></div> <div class="account_content_orders_list_order_element"></div></div>這是我的 JS 腳本: let orders = document.getElementsByClassName("account_content_orders_list_order"); for (let k = 0; k < orders.length; k++) { orders[k].addEventListener("click", () => { this.classList.add("active_order"); }); }但是當我單擊 HTML 元素時,我在 Chrome 控制臺中收到錯誤消息:我想檢查這個關鍵字是否指向正確的 DOM 元素,所以我添加了console.log(this); 到我上面向您展示的循環,但我現在知道這個指向window對象的關鍵字存在某種問題,我不知道為什么。有人可以提供任何建議嗎?我沒主意了。抱歉,如果它重復,我找不到任何與我的主題類似的主題。
1 回答

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
箭頭函數沒有自己的this. 使用標準函數:
orders[k].addEventListener("click", function () {
this.classList.add("active_order");
});
如果你真的想使用箭頭功能,你可以使用event.currentTarget:
orders[k].addEventListener("click", event => {
event.currentTarget.classList.add("active_order");
});
addEventListener()注入event.currentTarget為this.
- 1 回答
- 0 關注
- 138 瀏覽
添加回答
舉報
0/150
提交
取消