if / else在javascript中的插值函数内

时间:2014-08-23 07:17:11

标签: javascript jquery if-statement ruby-on-rails-4 interpolation

这是我的代码无效:

    $.each( gon.jbuilder, function (counter, lender) { 
      var contentString = '<div id="content">'+
        '<div id="siteNotice">'+
        '</div>'+
        '<h1 id="firstHeading" class="firstHeading">'+ lender.email + '</h1>'+
        '<div id="bodyContent">'+
        '<ul>' +
        if (inventory.hasOwnProperty('description')) {
          $.map( lender.inventories, function (inventory, counter) {
            return '<li>' + inventory.itemlist_id + ': ' + inventory.description + '</li>';
          }).join('') +
        } else {
          $.map( lender.inventories, function (inventory, counter) {
            return '<li>' + inventory.itemlist_id + '</li>';
          }).join('') +
        }
        '</ul>' +
        '</div>'+
        '</div>';

我得到的错误是Uncaught SyntaxError: Unexpected token if。我不确定如何正确编写if语句以使其正常工作。基本上,我创建了一系列contentString变量,每个变量lender一个。在每个contentString中,$map正在为父inventories生成所有子lender的列表。有些inventoriesdescriptions所以,如果这是真的,我也想打印描述。但如果没有,我想跳过它。

更新新代码

感谢您的评论!所以这就是我现在所拥有的:

    $.each( gon.jbuilder, function (counter, lender) { 
      var contentString = '<div id="content">'+
        '<div id="siteNotice">'+
        '</div>'+
        '<h1 id="firstHeading" class="firstHeading">'+ lender.email + '</h1>'+
        '<div id="bodyContent">'+
        '<ul>' +
        $.map( lender.inventories, function (inventory, counter) {
          if (inventory.description == "") {
            var description = ''
          } else {
            var description = ': ' + inventory.description
          };
          return '<li>' + inventory.itemlist_id + description + '</li>';
        }).join('') +
        '</ul>' +
        '</div>'+
        '</div>';

虽然它不再抛出错误,但if语句似乎无法正常工作,即使inventory.description为空,也会返回: null,当我希望它什么都不返回时。

2 个答案:

答案 0 :(得分:0)

这对你有帮助......

var contentString = '<div id="content">'+
    '<div id="siteNotice">'+
    '</div>'+
    '<h1 id="firstHeading" class="firstHeading">'+ lender.email + '</h1>'+
    '<div id="bodyContent">'+
    '<ul>' ;
    if (inventory.hasOwnProperty('description')) {
      $.map( lender.inventories, function (inventory, counter) {
        contentString += '<li>' + inventory.itemlist_id + ': ' + inventory.description + '</li>';
      }).join('') ;
    } else {
      $.map( lender.inventories, function (inventory, counter) {
        contentString += '<li>' + inventory.itemlist_id + '</li>';
      }).join('') ;
    }
     contentString + '</ul>' +
    '</div>'+
    '</div>';

并在最后一个返回变量内容String

答案 1 :(得分:0)

最后的答案,感谢大家的评论!大量来自@Felix的评论。

$.each( gon.jbuilder, function (counter, lender) { 
  var contentString = '<div id="content">'+
    '<div id="siteNotice">'+
    '</div>'+
    '<h1 id="firstHeading" class="firstHeading">'+ lender.email + '</h1>'+
    '<div id="bodyContent">'+
    '<ul>' +
    $.map( lender.inventories, function (inventory, counter) {
      if (inventory.description == null) {
        var description = ''
      } else {
        var description = ': ' + inventory.description
      };
      return '<li>' + inventory.itemlist_id + description + '</li>';
    }).join('') +
    '</ul>' +
    '</div>'+
    '</div>';