0

我在 if 语句中动态创建条件并将其存储在 Profile_Filter 变量中,但是当我对数组运行它时,它会将所有记录添加到我的临时数组中,而不是添加匹配的记录。

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);
}
4

1 回答 1

1

请注意,您的Profile_Filter变量不包含任何可执行代码;它只包含一个简单的字符串,可能看起来像 Javascript 代码,但实际上并没有被解释。

当在 if 语句中将此字符串变量用作布尔表达式时,解释器只检查字符串是否“为真”(在字符串的情况下,这意味着检查字符串的长度是否 > 0)。

为了在 if 语句中实际执行存储在变量中的代码,您可以使用该eval函数(但也查看此问题以了解为什么使用eval通常是一个坏主意)。

于 2013-11-06T20:47:18.213 回答