Javascript onclick和eventListener用于下拉菜单不工作

Javascript onclick和eventListener用于下拉菜单不工作,javascript,Javascript,我有一个下拉类,我想在其中创建一个新元素,你猜到了,它的工作原理和下拉菜单完全一样: class Dropdown{ constructor(name,element,classNa){ this.classN = classNa; var x = new CElement(name,"div",dropdownHeaderStyle,"classN"); x.display(element); } dropdown(mes){ var z =

我有一个下拉类,我想在其中创建一个新元素,你猜到了,它的工作原理和下拉菜单完全一样:

class Dropdown{
  constructor(name,element,classNa){
    this.classN = classNa;
      var x = new CElement(name,"div",dropdownHeaderStyle,"classN");
      x.display(element);
  }
  dropdown(mes){
    var z = new CElement(mes,"div",dropDownStyle,this.classN);
    z.display(".classN");

  }
}
(我有另一个类CElement,它使用以下参数创建元素:value、elementType、elementStyle、classPara=“”,并用display函数将其追加,但没有问题) 样式:

var dropDownStyle = "display:none;";
var show = "display:block;";
以及showFunction:

function showFunction(selector) {
  document.querySelector(selector).classList.toggle("show");
}
当我添加这个坏男孩时,问题发生了:

 x.addEventListener('click',showFunction(".drpDown"));
或者这个:

x.onclick = showFunction(".drpDown");
它几乎崩溃了,如果我在构造器中加上,在那一行之后,没有任何工作。。。
可笑的是,我使用的是另一个addEventListener('click')。这很有效。我做错了什么?

这能回答您的问题吗?欢迎这么说。您需要了解函数引用之间的差异(这是事件处理程序所期望的)和函数调用。我甚至使用了匿名函数,但它不起作用……我必须在类外还是构造函数内添加事件侦听器吗?我不能对更广泛的问题发表评论,引用与调用问题与类/构造函数无关。很清楚的是,`x.addEventListener('click',showFunction(“.drpDown”);`将立即调用您的事件回调,而不是在事件触发时调用,因为您向它传递的是调用,而不是函数引用。当我在构造函数中添加那个坏小子时,它会使下拉列表(mes)不存在为什么?