如何在循环外使用每个循环变量(项)

时间:2018-01-19 10:06:35

标签: javascript jquery

我想在每个循环中声明变量,例如这个

switch (label) {
case "Users":
  content = item.username+ ' ' + item.firstname + ' '
    + item.lastname + '('+ item.organization + ')';
  break;
default:
}

$.each(result, function (i, item) {
  html += "<option value ='" + item.id + "'>" + content + "</option>";
});

但由于项目变量尚未定义,我将得到一个ReferenceError。

在循环内部移动开关会使它非常慢。

甚至可以在范围之外声明循环变量吗?

function selectorAddEdit(label, tag, result, labelconf) {
  var idtag = tag+"s";
  var none = "<option value='None'>None</option>";
  var labelHead = (labelconf=="head") ? "<div class='selectTitles'><label>"+label+"</label></div>" : "";

  switch (label) {
  case "Users":
    var content = item.username + ' ' + item.firstname + ' ' + item.lastname + '('+ item.organization + ')';
    break;
  default:
  }

  var html = labelHead + "<select name='" + tag + "' class='" + tag + "'>";
  $.each(result, function (i, item) {
    html += "<option value ='" + item.id + "'>" + content + "</option>";
  });

  html += "</select></div>";

  $("." + idtag).html(html);
}

2 个答案:

答案 0 :(得分:1)

content声明为全局变量

 var content="";    
switch (label) {
        case "Users":
        content = item.username+ ' ' + item.firstname + ' ' + item.lastname + '('+ item.organization + ')';
          break;
        default:

      }

      $.each(result, function (i, item) {
        html += "<option value ='"+item.id+"'>"+content+"</option>";
      });

答案 1 :(得分:1)

这假设item是唯一/唯一的,因此您希望在每次循环迭代时重新评估switch语句。您可以做的是在评估给定条件后使用返回值的方法/函数:

var getOptionContent = function(item) {
    switch (label) {
        case "Users":
            return item.username + ' ' + item.firstname + ' ' + item.lastname + '(' + item.organization + ')';
        default:
            return '';
    }
}

var html = labelHead + "<select name='" + tag + "' class='" + tag + "'>";
$.each(result, function(i, item) {
    html += "<option value ='" + item.id + "'>" + getOptionContent(item) + "</option>";
});