我在if语句中动态创建标准并存储在Profile_Filter varabile中但是当我针对数组运行它时,它会将所有记录添加到我的临时数组而不是添加匹配的记录..
var Profile_Filter = "";
if ($("#DoctorNameDropDown option:selected").text() != "- Select One -") {
Profile_Filter += 'gAssessorsCompanyAssociationsArray[i].Name == $("#DoctorNameDropDown option:selected").val()';
}
if ($("#Degree").val() != "") {
var Degree_Filter = "";
var Degree = $("#Degree").val().split(";");
for (var i = 0; i < Degree.length; i++) {
if (Degree[i] == "") {
Degree.splice(i, 1);
i--;
}
}
if (Degree.length > 1) {
for (var j = 0; j < Degree.length; j++) {
if (j == 0) {
Degree_Filter += '(gAssessorsCompanyAssociationsArray[i].Degree.indexOf("' + Degree[j] + '") > 0';
} else {
Degree_Filter += ' && gAssessorsCompanyAssociationsArray[i].indexOf("' + Degree[j] + '") > 0';
}
}
Degree_Filter += ")";
} else Degree_Filter += '(gAssessorsCompanyAssociationsArray[i].Degree.indexOf("' + Degree[0] + '") > 0';
if (Profile_Filter != "") Profile_Filter += " && " + Degree_Filter; else Profile_Filter += Degree_Filter;
}
var temp = [];
for (var i = 0; i < gAssessorsCompanyAssociationsArray.length; i++) {
if (Profile_Filter) alert(gAssessorsCompanyAssociationsArray[i].Name);
}
答案 0 :(得分:1)
请注意,您的Profile_Filter
变量不包含任何可执行代码;它只包含一个简单的字符串,可能看起来像Javascript代码,但实际上并没有被解释。
当在if语句中使用此字符串变量作为布尔表达式时,解释器只检查字符串“是否为真”(在字符串的情况下,这意味着检查字符串的长度是否为> 0)。 / p>
为了在if语句中实际执行存储在变量中的代码,您可以使用eval
函数(但请还要查看this question了解为什么使用eval
通常是一个坏主意。)