Javascript 如何使.addEventListener仅在满足所有条件时执行函数?

Javascript 如何使.addEventListener仅在满足所有条件时执行函数?,javascript,date,if-statement,time,addeventlistener,Javascript,Date,If Statement,Time,Addeventlistener,在上面的代码中,我只希望在所有条件都满足时执行console.log 如果(!date.value&&!startTime.value&&!endTime.value)已满。现在,如果只满足一个条件,它总是console.log记录一个值。 当我检查这些值时: if (!date.value && !startTime.value && !endTime.value) { [startTime, endTime, date].forEach(item =&

在上面的代码中,我只希望在所有条件都满足时执行console.log
如果(!date.value&&!startTime.value&&!endTime.value)
已满。现在,如果只满足一个条件,它总是console.log记录一个值。 当我检查这些值时:

if (!date.value && !startTime.value && !endTime.value) {
    [startTime, endTime, date].forEach(item => {
        {
            item.addEventListener("change", function () {

                    console.log(`${date.value}` + "T" + `${startTime.value}` + ":00" + "Z" + ","
                        + `${date.value}` + "T" + `${endTime.value}` + ":00" + "Z"
                    );

                }
            )
        }
    })
}
控制台只显示了一条空行。所以它们的默认值应该是
,对吗?
有人知道为什么只有一个值被更改时才会执行该函数吗?

在不需要的时候,您一直在添加侦听器。最初,将侦听器添加到输入中,然后使用一个函数来处理发生的事情

//获取输入
const inputs=document.querySelectorAll('input');
//为每个添加一个侦听器-注意,这取决于
//您可能希望切换到事件委派
// https://dmitripavlutin.com/javascript-event-delegation/
[…输入].forEach(输入=>{
input.addEventListener('change',handleChange,false);
});
功能手柄更改(e){
//现在只需检查是否有任何输入为空
常量allAreEmpty=[…输入].every(输入=>{
返回input.value=='';
});
//并且仅在以下情况下返回答案:
//输入为空
if(allarempty)console.log(1);
}


谢谢您的回答!
我找到了一个如下所示的解决方案:

//检查所有值的更改。然后更改console.log值并在繁忙时执行请求。
[…输入].forEach(输入=>{
input.addEventListener('change',function(){
如果(date.value!==“”&&startTime.value!==“”&&endTime.value!==“”
) {
console.log(`“${date.value}T${startTime.value}:00Z”,
“${date.value}T${endTime.value}:00Z”`);
freeRequest.execute(函数(resp){
控制台日志(resp);
})
}否则{
控制台日志(“更改日期请填写”)
}
}
)
}

)
“有人知道为什么只有一个值被更改时才会执行函数吗?”-因为在添加事件处理程序之前,该条件会被检查一次。之后,事件处理程序被添加到相关元素中——因此,每当用户更改其中一个字段的值时,事件处理程序都会执行回调函数——不管这些字段的值更改为什么,只要它们确实更改了即可。您的代码说:1。检查一些状况。如果满足条件,则为2。将单击处理程序附加到所有位置。3.单击console.log。这正是发生的事情,因为逻辑是有缺陷的。代码应该是:1。附加所有单击处理程序。2.单击后,检查条件是否满足,如果满足,则检查3。console.log。
console.log(startTime.value);
console.log(endTime.value);
console.log(date.value);