【问题标题】:loop through array using split() to separate items by commas使用 split() 循环遍历数组以用逗号分隔项目
【发布时间】:2014-05-03 05:41:57
【问题描述】:

我无法拆分Months 的值并将每个值放入使用.each 的选择框中。我使用了以下代码,split() 根本没有任何效果。我有一个带有两个选项的选择框,但这些值没有分成每个选项。

JSON 数据: [{"Title":"DataTitle","Months":"January,February","Location":"Africa"}]

代码:

var item_html ='';
$.ajax({
    url: "http://www.jsonfile.com/json",
    success: function (data) {
     item_html = pData(feedformat,data);
     $('.displayarea').append(item_html).slideDown();
    },
  error: function ()        
});

function pData(type, data) { 
     switch(type) {
       case 'Case1':
          item_html += '<h3>'+item.Title+'</h3>;'

          if(item.Months.length !== 0) {
               var Months = item.Months.split(",");
               item_html += '<select>';
               $.each(Months,function(i){
                 item_html += '<option>'+Months+'</option>';
               });
               item_html += '</select>';
          }

          item_html += '<h3>'+item.Location+'</h3>';

我用上面的代码得到的结果是:

<select><option>January,February</option><option>January,February</option></select>

我正在寻找的是

<select><option>January</option><option>February</option></select>

任何帮助将不胜感激。

【问题讨论】:

  • 呃,结果呈现了2个选项,这不是你想要的吗?
  • @BGerrissen,对不起,我犯了一个错误。这就是我要找的。但我得到的结果是&lt;select&gt;&lt;option&gt;January,February&lt;/option&gt;&lt;option&gt;January,February&lt;/option&gt;&lt;/select&gt;

标签: javascript jquery html json split


【解决方案1】:

改变这个:

        $.each(Months,function(i){
             item_html += '<option>'+Months+'</option>';
        });

到:

        $.each(Months,function(i, month){
             item_html += '<option>'+month+'</option>';
        });

您将所有月份都放在每个选项中,而不仅仅是迭代中的当前月份。

【讨论】:

    【解决方案2】:

    试试这个:

    $.each(Months,function(i){
        item_html += '<option>'+Months[i]+'</option>';
    });
    

    而不是

    $.each(Months,function(i){
        item_html += '<option>'+Months+'</option>';
    });
    

    另一件事是您的 JSON item 是一个数组对象。

    item =[{"Title":"DataTitle","Months":"January,February","Location":"Africa"}];
    
    item_html ="";
    item_html += '<h3>'+item[0].Title+'</h3>';
    if(item[0].Months.length !== 0) {
        var Months = item[0].Months.split(",");
        item_html += '<select>';
        $.each(Months,function(i){
           item_html += '<option>'+ Months[i] +'</option>';
        });
        //or
        //$.each(Months,function(i, month){
        //   item_html += '<option>'+ month +'</option>';
        //});
        item_html += '</select>';
     }
     item_html += '<h3>'+item[0].Location+'</h3>';
    
    $('.displayarea').append(item_html).slideDown();
    

    这里是 Demo

    【讨论】:

      【解决方案3】:

      解决方案...

      function pData(type, data) { 
           switch(type) {
             case 'Case1':
                item_html += '<h3>'+item.Title+'</h3>;'
      
                if(item.Months.length !== 0) {
                     var Months = item.Months.split(",");
                     item_html += '<select>';
                     $.each(Months,function(i){
                       item_html += '<option>'+Months.split(",")[i]+'</option>';
                     });
                     item_html += '</select>';
                }
      
                item_html += '<h3>'+item.Location+'</h3>';
      

      【讨论】:

        【解决方案4】:

        试试这个:-

         var Months = item.Months.split(",");
         item_html += '<select>';
         $.each(Months,function(i){
           item_html += '<option>'+ Months[i] +'</option>';
         });
         item_html += '</select>';
        

        Months 这是一个数组对象。所以你需要从迭代中获取当前数组项。

        Working Example

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-13
          • 2021-02-09
          • 1970-01-01
          • 2023-03-11
          • 2012-05-28
          • 1970-01-01
          • 2012-07-03
          • 1970-01-01
          相关资源
          最近更新 更多