当条件存储在变量中时,if语句没有正确执行

时间:2013-11-06 20:40:12

标签: javascript

我在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);
}

1 个答案:

答案 0 :(得分:1)

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

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

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