为什么我的JavaScript事件侦听器条件不起作用?

为什么我的JavaScript事件侦听器条件不起作用?,javascript,class,addeventlistener,Javascript,Class,Addeventlistener,此事件侦听器在我单击文档中的任何位置时执行,我希望在我单击This.dropdown或单击This.inputField时不执行此事件侦听器。现在,即使单击这两个元素,它也会执行 constructor(inputField, monthInput, previousMonth, nextMonth, dates, dropdown, document) { this.monthInput = monthInput; this.previousMonth = pr

此事件侦听器在我单击文档中的任何位置时执行,我希望在我单击
This.dropdown
或单击
This.inputField
时不执行此事件侦听器。现在,即使单击这两个元素,它也会执行

constructor(inputField, monthInput, previousMonth, nextMonth, dates, dropdown, document) {
        this.monthInput = monthInput;
        this.previousMonth = previousMonth;
        this.nextMonth = nextMonth;
        this.dates = dates;
        this.dropdown = dropdown;
        this.inputField = inputField;
        this.document = document;

this.document.addEventListener('click', (e) => {
            if (e.target.id !== this.dropdown.id && e.target.id !== this.inputField.id) {
                this.dropdown.style.display = 'none';
            }
        });
}

谢谢你的建议

捕获这些元素上的单击事件并停止事件传播:

this.dropdown.addEventListener('click', (e) => {
  console.log('Element clicked');
  e.stopPropagation();
});

这解决了问题:

checkPathForId(path) {
        for (let item of path) {
            if (item === this.dropdown || item === this.inputField) {
                return true;
            }
        }
        return false;
    }

我锁定了错误的元素,我试图获取的元素是父元素。

我正在检查您的代码,但现在:
console.log()
是您的朋友。编辑:代码工作正常:(在第一个输入字段中单击或在“dropdown”->什么都不发生,单击其他任何地方,“dropdown”消失)单击事件通过树向上传播;我想你们还需要抓住下拉列表的孩子们。这不是OP要问的,他们想知道为什么他们的代码不能按预期运行。