我被困在一个代码上,不知道为什么它不起作用请建议我
我在数组中推送条件,如
var condition = [];
if(performer !== "All" ){
condition.push("(($( this ).attr('performer') === $.trim(performer)))");
}
if(music !== "All" ){
condition.push("(($( this ).attr('music') === $.trim(music)))");
}
if(collector !== "All" ){
condition.push("(($( this ).attr('collector') === $.trim(collector)))");
}
if(clickedThemeArray.toString() !== "All"){
condition.push("(arraysEqual(themeArray,clickedThemeArray))");
}
console.log(condition.join(" && "));
然后加入&&像这样
var finalCon = condition.join(" && ");
if(finalCon){
$( this ).addClass('displayBlock');
}
但它不起作用请帮帮我
提前致谢。
答案 0 :(得分:0)
摆脱双引号
condition.push("(($( this ).attr('performer') === $.trim(performer)))");
应该是
condition.push($( this ).attr('performer') === $.trim(performer));
等等。
否则,它们将被评估为字符串,而不是布尔值。
答案 1 :(得分:0)
您通过添加双引号将数组中的条件作为字符串推送。因此,当您将它们与&&
组合时,它们无法正常工作。
书写
condition.push( $(this).attr('performer') === $.trim(performer) );
应该足够了。
答案 2 :(得分:0)
一种解决方案是改为运行变量:
var passedConditions = true;
if(performer !== "All" ){
passedConditions = passedConditions && $( this ).attr('performer') === $.trim(performer);
}
if(music !== "All" ){
passedConditions = passedConditions && $( this ).attr('music') === $.trim(music);
}
if(collector !== "All" ){
passedConditions = passedConditions && $( this ).attr('collector') === $.trim(collector);
}
if(clickedThemeArray.toString() !== "All"){
passedConditions = passedConditions && arraysEqual(themeArray,clickedThemeArray);
}
if (passedConditions) {
$( this ).addClass('displayBlock');
}