javascript - 单击按钮时, "this"在显示描述函数中如何工作?

标签 javascript this

我正在 Udemy 上学习 JavaScript,有一项任务是编写一段代码,在单击“查看更多”按钮时显示内容。

我不明白怎么办this在显示内容代码中工作以及 JavaScript 如何理解变量 t是。 我在 QA 部分找到了解决方案,但我不确定它是如何工作的。 显然,for i++循环代码是必要的,以便该代码适用于选项卡中的每个按钮。

问题:

  1. this 怎么样?在这里工作,为什么有必要?
  2. JavaScript 如何理解 t是?
let desctiptionTab = document.querySelectorAll('.description-btn');

for (let i = 0; i < desctiptionTab.length; i++) {
  desctiptionTab[i].addEventListener('click', function() {
    Modal(this);
  });
}

function Modal(t) {
  overlay.style.display = 'block';
  t.classList.add('more-splash');
  document.body.style.overflow = 'hidden';
};

最佳答案

在您的代码中,您试图在 HTML 元素的 click 事件上实现某些目标。这就是您使用 addEventListener 附加点击事件的原因。

现在,JS 中的函数通常具有运行时作用域(除非您使用 callbindapply More Info ),这意味着 this 值可以根据调用函数时的上下文而改变。在您的情况下,this 的值是单击的 HTML 元素,您将使用该元素将其作为参数 t 传递给 Modal(t) .

document.getElementById('hello').addEventListener('click', function() {
  console.log(this);
});
<div id="hello">Hello</div>

关于javascript - 单击按钮时, "this"在显示描述函数中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57644292/

相关文章:

javascript - 在由 addEventListener 管理的点击事件中使用 THIS

javascript - 用 Mongoose 存储时间的数据类型

javascript - 振荡计数器增量?

javascript - .defineProperty 方法期间调用堆栈和 this 的行为

javascript - 如何在 javascript 中引用函数对象的成员?

JavaScript 函数调用

javascript - 如何从 Javascript 中的数字数组中删除前导零

javascript - 使用 jQuery 触发按键...并指定按下哪个键

javascript - 持续访问 Google 日历 API

java - C++等价于Java this