Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行两个if-else块的javascript_Javascript_Html - Fatal编程技术网

执行两个if-else块的javascript

执行两个if-else块的javascript,javascript,html,Javascript,Html,我的Javascript函数正在执行两个if-else块。 我想在数组中添加复选框值(如果选中),并在未选中时删除该值 输出在if和else内部。但我想运行if或else块。 编辑:我正在使用php生成动态标签标签。为了便于理解,我在本例中只显示了一个标签标签。但每个输入标记的值都是从数据库中导出的,并封装在标签标记中 函数filterbyprotype(当前){ protypes=[]; document.querySelectorAll('.filterprotypes').forEach

我的Javascript函数正在执行两个if-else块。 我想在数组中添加复选框值(如果选中),并在未选中时删除该值

输出在if和else内部。但我想运行if或else块。

编辑:我正在使用php生成动态标签标签。为了便于理解,我在本例中只显示了一个标签标签。但每个输入标记的值都是从数据库中导出的,并封装在标签标记中

函数filterbyprotype(当前){
protypes=[];
document.querySelectorAll('.filterprotypes').forEach(函数(ele){
控制台日志(ele);
如果(勾选元素){
当前最接近的('label').style.background=“var(--headercolor)”;
当前.closest('label').style.color=“#fff”;
protypes.push(元素值);
警报(“内部如果”);
}否则{
当前.closest('label').style.background=“透明”;
当前.closest('label').style.color=“#000”;
删除protypes[ele.value];
警惕(“其他内部”);
}
});
}

为了便于理解,我在本例中只显示了一个标签标签

这是非常不幸运的,因为只有当存在多个输入元素时,您的解决方案才会出现问题

document.querySelectorAll('.filterprotypes').forEach(函数(ele){…}
此行有问题,因为每次单击任何一个输入时都会触发其中的逻辑。此外,根本不需要此迭代,因为您已经将元素传递给函数(
当前

变更后的工作方案:

函数filterbyprotype(当前){
protypes=[];
如果(当前选中){
当前最接近的('label').style.background=“var(--headercolor)”;
当前.closest('label').style.color=“#fff”;
protypes.push(当前值);
警报(“内部如果”);
}否则{
当前.closest('label').style.background=“透明”;
当前.closest('label').style.color=“#000”;
删除protypes[current.value];
警惕(“其他内部”);
}
}


这听起来真的不可能,您可能误解了问题。请提供一个可运行的版本来演示问题。您可以单击问题编辑器中的
,使其在页面中可运行。我已经编辑了您的帖子,并从代码中创建了片段。您提供的代码按预期工作。这些警报将用于dif不同的元素,而不是同一个元素你有一个foreach循环-你有两个复选框,其中一个是选中的一个不是吗?@ulou我删除了php标记。你只使用与特定问题相关的标记。html的生成方式与此无关。不管它是由ruby、java、python等生成的。php中的SME是在浪费时间探访这个问题