Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法更改';这';在javascript es6中?_Javascript_Css_Ecmascript 6 - Fatal编程技术网

有没有办法更改';这';在javascript es6中?

有没有办法更改';这';在javascript es6中?,javascript,css,ecmascript-6,Javascript,Css,Ecmascript 6,我想知道在JSES6中使用“this”时,是否有办法更改元素的样式。我有以下代码: const mobileSubItems=document.queryselectoral(“.mobile-menu-overlay\uu项”); 打开子菜单=(e)=>{ console.log(this); } 对于(var i=0;i

我想知道在JSES6中使用“this”时,是否有办法更改元素的样式。我有以下代码:

const mobileSubItems=document.queryselectoral(“.mobile-menu-overlay\uu项”);
打开子菜单=(e)=>{
console.log(this);
}
对于(var i=0;i
测试1
测试2

测试3
是的,您可以使用提供的逻辑。但是由于箭头函数的作用,您正在失去此上下文的功能。相反,请使用属性

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

如果希望它指向单击的元素,请使用function关键字定义openSubMenu函数

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

是的,您可以使用提供的逻辑。但是由于箭头函数的作用,您正在失去此上下文的功能。相反,请使用属性

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

如果希望它指向单击的元素,请使用function关键字定义openSubMenu函数

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

有没有办法更改javascript es6中“this”的css属性

是的,对回调使用普通函数定义,而不是胖箭头定义,这样触发事件集的
this
的值就会出现在那里

因为您使用的是胖箭头函数,
openSubMenu()
函数中的
this
的值不是从调用方获取的,而是从函数声明上下文获取的(this
的“词法”值)。如果将
openSubMenu()
声明为正常函数,则单击事件将
this
设置为导致事件的DOM元素,然后可以使用
this
设置其样式

因此,请改为:

function openSubMenu(e) {
    console.log(this);
}
人们需要记住,胖箭头函数不仅仅是函数声明的快捷方式。它们还影响
的值因此,如果希望函数调用方设置的
this
的值,则不要使用胖箭头函数,因为胖箭头声明会导致使用不同的
this
值。


我想您已经知道了,您也可以使用
e.target
引用触发事件的DOM元素,但是由于您明确询问了如何使
这个
工作,这就是我在上面向您展示的内容

有没有办法更改javascript es6中“this”的css属性

是的,对回调使用普通函数定义,而不是胖箭头定义,这样触发事件集的
this
的值就会出现在那里

因为您使用的是胖箭头函数,
openSubMenu()
函数中的
this
的值不是从调用方获取的,而是从函数声明上下文获取的(this的“词法”值)。如果将
openSubMenu()
声明为正常函数,则单击事件将
this
设置为导致事件的DOM元素,然后可以使用
this
设置其样式

因此,请改为:

function openSubMenu(e) {
    console.log(this);
}
人们需要记住,胖箭头函数不仅仅是函数声明的快捷方式。它们还影响
的值因此,如果希望函数调用方设置的
this
的值,则不要使用胖箭头函数,因为胖箭头声明会导致使用不同的
this
值。



我假设您已经知道,您也可以使用
e.target
引用触发事件的DOM元素,但是由于您明确询问了如何使
这个
工作,这就是我在上面向您展示的内容。

当您指的是常规函数时,不要使用箭头函数<代码>打开子菜单=函数(e){this.style.maxHeight=“none”;}当您指的是常规函数时,不要使用箭头函数<代码>打开子菜单=函数(e){this.style.maxHeight=“none”;}
这是解决问题的另一种方法,但实际上并没有回答如何使用
This
引用触发事件的DOM元素的问题。如果在每个类名为“test”的元素旁边都有div,我会说:e.target.closest(.test”).style.maxHeight='240px'?closest是一个jQuery函数,因此您可以像$(e.target)一样使用它。closest(…).css()这是解决问题的另一种方法,但实际上并没有回答如何使用
This
引用触发事件的DOM元素的问题。如果在每个类名称为“test”的元素旁边都有div我会说:e.target.nexist(“.test”).style.maxHeight='240px'?closest是一个jQuery函数,所以可以像$(e.target).closest(…).css()那样使用它