javascript - 如果和切换JS
问题描述
我在 if/else 上设置了一些条件,但它只适用于第一个条件,我使用了另一种方式开关,发现它完全有效,我该如何解决?
for (let i = 1; i < 10; i++) {
let contentall = document.getElementById(`content${i}`)
contentall.addEventListener('click', (e) => {
if (xhr.onreadystatechange = okgo) {
let ibg3 = document.querySelectorAll('.ibg3 img')
let text2 = document.querySelectorAll('.text2')
let text4 = document.querySelectorAll('.text4')
let ibg4 = document.querySelectorAll('.ibg4')
let arr = [ibg3, ibg4, text2, text4]
if (e.target !== text2[i - 1] || text4[i - 1] || ibg3[i - 1] || ibg4[i - 1]) {
console.log("no match")
} else {
letgotall(i - 1)
return
}
switch (e.target) {
case ibg3[i - 1]:
letgotall(i - 1)
break;
case text2[i - 1]:
letgotall(i - 1)
break;
case text4[i - 1]:
letgotall(i - 1)
break;
case ibg4[i - 1]:
letgotall(i - 1)
break;
default:
console.log("failure")
}
}
解决方案
因为你的条件不对,所以正确的方法是
if(e.target !== text2[i-1] || e.target !== text4[i-1])
或者如果你不想重复 e.target 你可以使用
if (!Set(text2[i-1], text4[i-1]).has(e.target)) console.log("Jesus Christ")
推荐阅读
- flutter - 我是 Flutter 的新手,我正在与 SetState 操作绑定,我正在尝试以块的方式组织代码,但 setState 不起作用,
- c++ - 如何在 SDL2 窗口上使用 Cairo 绘制一条白线?
- laravel - Laravel Eloquent 查询 200 万行需要很长时间
- python - 如何授予 PyCharm 访问 Ubuntu WSL 18.04 文件夹中的 python 项目的权限?
- sql-server - Microsoft 多维数据集使用边界和最佳实践
- sql - SQL where x 喜欢变量
- css - 垂直包裹 div
- java - 错误消息 ORA-00933: SQL 命令未正确结束
- javascript - 如何在嵌套的 Promise 中传播 resolve()?
- azure-web-app-service - 服务器重新启动后,上传的图像只能在适用于 Linux 的 Azure Web 应用程序中查看