Can';t单击复选框时触发javascript函数

Can';t单击复选框时触发javascript函数,javascript,jquery,html,Javascript,Jquery,Html,我有以下代码,它根据数组中的唯一值动态创建复选框。触发功能不起作用,我不知道为什么。我需要根据选中的复选框触发另一个函数 函数onlyUnique(值、索引、自身){ 返回self.indexOf(value)==索引; } 基于所选内容的函数过滤器(所选框id){ log(“所选选项:”); console.log(选中的\u框\u id); } 阵列2=['Z1','Z1','Z2','Z3','Z4','Z4','Z5','Z5','Z5','Z6','Z7','Z7']; var un

我有以下代码,它根据数组中的唯一值动态创建复选框。触发功能不起作用,我不知道为什么。我需要根据选中的复选框触发另一个函数

函数onlyUnique(值、索引、自身){
返回self.indexOf(value)==索引;
}
基于所选内容的函数过滤器(所选框id){
log(“所选选项:”);
console.log(选中的\u框\u id);
}
阵列2=['Z1','Z1','Z2','Z3','Z4','Z4','Z5','Z5','Z5','Z6','Z7','Z7'];
var unique\u account\u groups=array2.filter(仅限yunique);
日志(“找到的唯一帐户组:”);
console.log(唯一帐户组);
for(唯一账户组中的var prop)
{
jQuery(“#过滤器”).append(“”+唯一账户组[prop]+“”);
}

此处的连接错误:

'onclick="filter_based_o
^
只要增加一个空间,一切都能正常工作

函数onlyUnique(值、索引、自身){
返回self.indexOf(value)==索引;
}
基于所选内容的函数过滤器(所选框id){
log(“所选选项:”);
console.log(选中的\u框\u id);
}
阵列2=['Z1','Z1','Z2','Z3','Z4','Z4','Z5','Z5','Z5','Z6','Z7','Z7'];
var unique\u account\u groups=array2.filter(仅限yunique);
日志(“找到的唯一帐户组:”);
console.log(唯一帐户组);
for(唯一账户组中的var prop)
{
jQuery(“#过滤器”).append(“”+唯一账户组[prop]+“”);
}

您刚刚错过了id周围的引号,以及onclick前面的一个空格

工作示例:

函数onlyUnique(值、索引、自身){
返回self.indexOf(value)==索引;
}
基于所选内容的函数过滤器(所选框id){
log(“所选选项:”);
console.log(选中的\u框\u id);
}
阵列2=['Z1','Z1','Z2','Z3','Z4','Z4','Z5','Z5','Z5','Z6','Z7','Z7'];
var unique\u account\u groups=array2.filter(仅限yunique);
日志(“找到的唯一帐户组:”);
console.log(唯一帐户组);
for(唯一账户组中的var prop)
{
jQuery(“#过滤器”).append(“”+唯一账户组[prop]+“”);
}

代码的主要问题是,在
id
属性周围缺少一个结束引号,这导致它与
onclick
属性合并,并打乱了逻辑。要解决此问题,只需在正确的位置添加

也就是说,您真的不应该再在*事件属性上使用
。它们已经过时,不利于分离关注点

相反,请悄悄地附加事件处理程序。由于您已经在页面中包含了jQuery,您可以这样做:

var array2=['Z1','Z1','Z2','Z3','Z3','Z4','Z4','Z5','Z5','Z6','Z7','Z7'];
var html=array2.filter(函数(v,i,a){
返回a.indexOf(v)==i;
}).map(功能(项目){
返回`${item}`;
});
$(“#过滤器”).append(html).on('change','.list-group2-item',function(){
console.log('Selected option:',this.id);
});

串联和遗忘空格中有一个错误, 我通过改变最少的东西,使其工作如下:

函数onlyUnique(值、索引、自身){
返回self.indexOf(value)==索引;
}
基于所选内容的函数过滤器(所选框id){
日志(“选择的选项:”,选择的\u框\u id);
}
阵列2=['Z1','Z1','Z2','Z3','Z4','Z4','Z5','Z5','Z5','Z6','Z7','Z7'];
var unique\u account\u groups=array2.filter(仅限yunique);
//日志(“找到的唯一帐户组:”,唯一帐户组);
for(唯一账户组中的var prop){
jQuery(“#过滤器”).append(“”+唯一账户组[prop]+“”);
}


1.您显示的代码中没有“触发器”功能2.为什么要使用过时的
onclick
属性,而不是使用不显眼的方法附加事件?3.不要使用
单击收音机上的事件或复选框。使用
更改
。只需检查元素,您就可以看到此
id=“zonclick”=“根据所选内容筛选(this.id)”“
…您可以使用以避免类似的简单错误-只需将所有复选框指定为同一类,然后使用事件委派基于该类绑定单击事件