试图让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对话?
答案 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>