我正在尝试显示从复选框中选择的过滤器。首先,我要创建一个从复选框中选择的值数组,然后尝试附加到字符串
例如,我有两个标记为label1
和label2
的复选框,我建立了数组['label1','label2']
。
期望的结果将是“ Filtered by: Label1, Label2
”,但我得到了Filtered by: Label1,Label2, Label1,Label2
我想这是我尝试构建字符串的for循环中的东西,因为数组看起来不错
let topLabel = jQuery('.industry-filter').data('selected-text') + ' ';
let termsName= ['Industry', 'Category']
if(termsName.length){
for(var j = 0; j < termsName.length; j++){
if(j == termsName.length - 1){
topLabel += termsName;
}else{
topLabel += termsName+', ';
}
}
}else{
topLabel = jQuery('.industry-filter').data('text');
}
$('.industry-filter').text(topLabel);
这是一支显示问题的笔:https://codepen.io/anon/pen/pqjYxL
答案 0 :(得分:1)
您需要按索引访问。
在不使用索引的情况下,您将分配完整的数组。
let topLabel = jQuery('.industry-filter').data('selected-text') + ' ';
let termsName= ['Industry', 'Category']
if(termsName.length){
for(var j = 0; j < termsName.length; j++){
if(j == termsName.length - 1){
topLabel += termsName[j];
^^^
}else{
topLabel += termsName[j] +', ';
^^^
}
}
}else{
topLabel = jQuery('.industry-filter').data('text');
}
$('.industry-filter').text(topLabel);
答案 1 :(得分:0)
您应该通过其 index 访问一个元素。
if(j == termsName.length - 1){
topLabel += termsName[j];
}else{
topLabel += termsName[j]+', ';
}
您的解决方案的一个简短版本可以使用join
方法。
if(termsName.length){
topLabel += termsName.join(',')
}