拆分数组

时间:2011-06-06 16:24:27

标签: javascript jquery arrays

我有两个javascript函数,第一个正在工作,第二个工作但没有回显隐藏输入中的正确值。

我设法让最后一个隐藏的输入值正确,但我不确定如何

var customTicketsArr = Array();

function EditEventAddTicket(){
    alertWrongTime = false;
    var TicketName = jQuery("#ticketname").val();
    var TicketPrice = jQuery("#ticketprice").val();
    var ticketquantity = jQuery("#ticketquantity").val();

    var storeString = "TicketName" + TicketName + "TicketPrice" + TicketPrice + "Quantity" + ticketquantity + '';
    customTicketsArr.push(storeString);
    EditEventUpdateTickets(true);
}


function EditEventUpdateTickets(fade){
   jQuery("#custom_tickets_string").val(customTicketsArr);
   var output = "";
   var style = "";
   for (i = customTicketsArr.length-1; i >= 0; i--){
       ticketname = customTicketsArr[i].split("TicketName");

           ticketprice = customTicketsArr[i].split("TicketPrice");

           ticketquantity = customTicketsArr[i].split("Quantity");
       if(fade){
           if (customTicketsArr.length - 1 == i){
               style = "display: none; ";
               var fadeInDiv = i;
           } else {
               style = "";
           }
       }
       if (i % 2 == 1) { style += "background-color: #660000; "}
       html = "<div id='customticket" + i + "' class='customeventbase' style='" + style + "'>";
       html += '<input type="hidden" name="customTicketid[' + i + '][Name]" id="customticketName' + i + '" value="'+ ticketname  + '" />';
           html += '<input type="hidden" name="customTicketid[' + i + '][Price]" id="customticketPrice' + i + '" value="' +ticketprice[1]  +'" />';
           html += '<input type="hidden" name="customTicketid[' + i + '][Quantity]" id="customticketQuantity' + i + '" value="'+ ticketquantity[1]  +'" />';

       html += '<button class="customeventdel" type="button"  onClick="EditEventRemoveDate(' + i + ')"></button>';
       html += '<div class="clear"></div>';
       html += '</div>\n';

       output += html;
   }
   output += "<input type='hidden' id='custom_ticket_info' name='custom_ticket_info' value='" + customTicketsArr + "' />";
   jQuery("#custom_ticket_container").html(output);
   if(fade){
      setTimeout("EditEventfadeInDiv(" + fadeInDiv +")", 10);
   }

}

此输出:

    <div style="background-color: #660000; " class="customeventbase" id="customticket1">
<input type="hidden" value=",testTicketPrice50Quantity44" id="customticketName1" name="customTicketid[1][Name]">
<input type="hidden" value="undefined" id="customticketPrice1" name="customTicketid[1][Price]">
<input type="hidden" value="44" id="customticketQuantity1" name="customTicketid[1][Quantity]">
<button onclick="EditEventRemoveDate(1)" type="button" class="customeventdel"></button>
<div class="clear"></div></div>

前两个隐藏字段的值不正确

3 个答案:

答案 0 :(得分:3)

它们不是不正确的值 - split()正在完全按照它应该做的 - 在删除分隔符后返回一个子串数组。

使用您的字符串结构,在TicketName上拆分将为您提供两个字符串 - 分隔符前面的子字符串和后面的子字符串 - TicketName本身不包括在内。

因此,对于字符串"TicketNametestTicketPrice50Quantity44",当您在""上拆分时,您将获得"testTicketPrice50Quantity44""TicketName"。在TicketPrice上拆分相同的字符串会为您提供"TicketNametest""50Quantity44"

我建议把对象放到你的数组中 -

var storeObject = {
                    "TicketName" : TicketName,
                    "TicketPrice" : TicketPrice, 
                    "Quantity" : ticketquantity
                  };
customTicketsArr.push(storeObject);

然后您可以将数据恢复为:

for (i = customTicketsArr.length-1; i >= 0; i--){
    var currentObject = customTicketsArr[i];

    var ticketname = currentObject.TicketName;
    var ticketprice = currentObject.TicketPrice;
    var ticketquantity = currentObject.Quantity;

    //do other stuff here
}

答案 1 :(得分:2)

为什么要将它保存为字符串?我建议将其存储在一个对象中:

function EditEventAddTicket(){
    alertWrongTime = false;
    var TicketName = jQuery("#ticketname").val();
    var TicketPrice = jQuery("#ticketprice").val();
    var ticketquantity = jQuery("#ticketquantity").val();

    var ticket = {"TicketName": TicketName, "TicketPrice": TicketPrice, "Quantity": ticketquantity};
    customTicketsArr.push(ticket);
    EditEventUpdateTickets(true);
}

然后您只需加载数据:

for (i = customTicketsArr.length-1; i >= 0; i--){
       ticketname = customTicketsArr[i].TicketName;
       ticketprice = customTicketsArr[i].TicketPrice;
       ticketquantity = customTicketsArr[i].Quantity;

       // ...
}

答案 2 :(得分:1)

为什么不制作二维数组?

var customTicketsArr = Array();

function EditEventAddTicket() {
    customTicketsArr.push({
        'name'  : jQuery("#ticketname").val(),
        'price' : jQuery("#ticketprice").val(),
        'qty'   : jQuery("#ticketquantity").val()
    });
}