如何将数组添加到includes()javascript
我使用composedPath检测元素的外部,但如果元素超过1,我需要将它们全部添加到if()。也许在js中有其他的方法?包括(document.querySelectorAll(“.js开放用户”);但这不是工作如何将数组添加到includes()javascript,javascript,Javascript,我使用composedPath检测元素的外部,但如果元素超过1,我需要将它们全部添加到if()。也许在js中有其他的方法?包括(document.querySelectorAll(“.js开放用户”);但这不是工作 document.addEventListener("click", (event) => { let b1 = event .composedPath() .includes(document.querySelectorAl
document.addEventListener("click", (event) => {
let b1 = event
.composedPath()
.includes(document.querySelectorAll(".js-open-user")[0]);
let b2 = event
.composedPath()
.includes(document.querySelectorAll(".js-open-user")[1]);
let b3 = event
.composedPath()
.includes(document.querySelectorAll(".js-open-user")[2]);
if (!b1 && !b2 && !b3) this.closeUser();
});
您可以使用
array.prototype.slice.call()
将节点列表转换为数组。
然后使用Array.prototype.some()
检查是否至少有一个符合标准,如果没有,您可以使用this.closeUser()
,这在我的示例中没有实现
document.addEventListener(“单击”,(evt)=>{
const openUsers=Array.prototype.slice.call(document.querySelectorAll('.js open user');
const composedPath=evt.composedPath();
如果(!openUsers.some(user=>composedPath.includes(user))){
//找不到打开的用户。。。
警报('没有匹配!');
返回;
}
警惕(‘匹配’);
});代码>
hi
哎呀
测试
最后一个
您可以使用array.prototype.slice.call()
将节点列表转换为数组。
然后使用Array.prototype.some()
检查是否至少有一个符合标准,如果没有,您可以使用this.closeUser()
,这在我的示例中没有实现
document.addEventListener(“单击”,(evt)=>{
const openUsers=Array.prototype.slice.call(document.querySelectorAll('.js open user');
const composedPath=evt.composedPath();
如果(!openUsers.some(user=>composedPath.includes(user))){
//找不到打开的用户。。。
警报('没有匹配!');
返回;
}
警惕(‘匹配’);
});代码>
hi
哎呀
测试
最后一个
以及如何在if中使用?像这个if(交叉点)这个.closeNav?它是如何在if中使用的?像这样如果(交叉点)这个。关闭导航?
const nodes = document.querySelectorAll(".js-open-user");
const intersection = event.composedPath().filter(n => nodes.includes(n));