如何使函数(f1)运行单独的函数(f2),但f2使用“ this”参数?

时间:2019-05-21 02:03:36

标签: javascript html css onclick

试图让onclick函数运行另一个函数,但是f2使用this,我想这就是搞砸了。

我尝试将this设置为覆盖层f,覆盖层f内的菜单f,onclick菜单和覆盖层f调用者。我的js知识很少,而且可能很容易解决,我只是不知道该怎么办。

------ html -------

<div class="eye" onclick="menu(this)">...</div>
<div class="overlay" id=overlay onclick="overlay()">...</div>

------ javascript ------

function menu(x) {
  x.classList.toggle("change");
  var overlay = document.getElementById("overlay");
  overlay.classList.toggle("show");
}

function overlay() {
  menu();
}

我的目标是能够单击#overlay并运行menu()函数。

显示的错误是“未捕获的TypeError:无法读取未定义的属性'classList'”。

这很有意义,因为它认为“ this”来自#overlay div,而不是.eye div。如何使其与.eye div对话?

1 个答案:

答案 0 :(得分:0)

您需要将this传递到对overlay的调用(使用overlay(this)),然后将该相同的元素传递给使用以下命令调用menu() menu(x)

function menu(x) {
  x.classList.toggle("change");
  var overlay = document.getElementById("overlay");
  overlay.classList.toggle("show");
}

function overlay(x) {
  menu(x);
}
<div class="eye" onclick="menu(this)">...</div>
<div class="overlay" id=overlay onclick="overlay(this)">...</div>

话虽如此,您可以直接调用menu(x),就像从.overlay调用时一样,this指的是.overlay而不是菜单,并且没有其他功能overlay()的功能:

<div class="overlay" id=overlay onclick="menu(this)">...</div>