我想知道在js es6中使用“ this”时是否有一种方法可以更改元素的样式。我下面有以下代码:



const mobileSubItems = document.querySelectorAll(".mobile-menu-overlay__item");
openSubMenu = (e) => {
  console.log(this);
}

for (var i = 0; i < mobileSubItems.length; i++) {
  mobileSubItems[i].addEventListener('click', openSubMenu);
}

<div class="mobile-menu-overlay__item-content" style="maxHeight:0;">Test 1</div>
<div class="mobile-menu-overlay__item-content" style="maxHeight:0;">Test 2</div>
<div class="mobile-menu-overlay__item-content" style="maxHeight:0;">Test 3</div>





我希望openSubmenu代码类似于以下内容:

openSubMenu = (e) => {
  this.style.maxHeight = "none";
}

最佳答案

是的,您可以使用提供的逻辑。但是由于箭头功能,您将丢失此上下文。而是使用event.target属性。

var openSubMenu = (e)=> {
  e.target.style.maxHeight = '240px';
}


要么

如果要使其指向单击的元素,请使用function关键字定义openSubMenu函数。

var openSubMenu = function(e) {
  this.style.maxHeight = '240px';
}


Working fiddle

09-28 02:51