使用split()循环遍历数组,用逗号分隔项目

时间:2014-05-03 05:41:57

标签: javascript jquery html json split

我无法拆分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>

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:2)

改变这个:

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

为:

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

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

答案 1 :(得分:1)

试试这个:

$.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

答案 2 :(得分:1)

试试这个: -

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

Months这是一个数组对象。因此,您需要从迭代中获取当前数组项。

Working Example

答案 3 :(得分:1)

解决方案......

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>';