如何将字符串数组赋值给子​​元素?

时间:2016-09-26 03:53:50

标签: javascript jquery

如果我有字符串变量mydata="a1,a2,a3, ,a5,b1,b2,b3,b4,b5"并且我需要在下面的元素中分配?: -

Parent Index: 0 (div classname="parts")
.serialno="a1"
.modelno="a2"
.section="a3"
.subsection=" " -empty value
.incharge="a5"

Parent Index: 1 (div classname="parts")
.serialno="b1"
.modelno="b2"
.section="b3"
.subsection="b4 "
.incharge="b5"

我已经知道的是如何将字符串数组直接分配给元素,如下所示: -

    var mydata = $("#txtproduction").val();
                var gdata = mydata.split(',').length / 5; //get how many group



           if (gdata = 1) {
                $.each(mydata.split(','), function (index, value) {                  
                    if (index == 0) { $('.serialno').val(value); }
                    if (index == 1) { $('.modelno').val(value); }
                    if (index == 2) { $('.section').val(value); }
                    if (index == 3) { $('.subsection').val(value); }
  if (index == 4) { $('.incharge').val(value); }
                });
            }

但是当元素在父母内部有子时我不知道如何处理它......

       if (gdata >1){
        //if more than 1 group data - how to handle loop assign value to element accondingly??

       }

请帮助我,我已经想好了很多天,但仍然无法弄清楚如何解决这个问题。 感谢您提前阅读和回复我的问题。

2 个答案:

答案 0 :(得分:1)

对于元素结构如下:

<div class="parts">
<input type="text" class="serialno">
<input type="text" class="modelno">
<input type="text" class="section">
<input type="text" class="subsection">
<input type="text" class="incharge">
</div>
<div class="parts">
<input type="text" class="serialno">
<input type="text" class="modelno">
<input type="text" class="section">
<input type="text" class="subsection">
<input type="text" class="incharge">
</div>

下面的代码应该有效:

var mydata = $("#txtproduction").val();            
var arr = mydata.split(',');
$('.serialno').each(function(i, o)     {$(this).val(arr[$(this).parent().index(".parts")*5]);});
$('.modelno').each(function(i, o) {$(this).val(arr[$(this).parent().index(".parts")*5+1]);});
$('.section').each(function(i, o) {$(this).val(arr[$(this).parent().index(".parts")*5+2]);});
$('.subsection').each(function(i, o) {$(this).val(arr[$(this).parent().index(".parts")*5+3]);});
$('.incharge').each(function(i, o) {$(this).val(arr[$(this).parent().index(".parts")*5+4]);});  

如果结构不同,请纠正我的理解。 查看here

答案 1 :(得分:1)

您是否可以更改mydata的结构?您在记录内和记录之间有相同的分隔符。你最好用分号加入记录,例如a1,a2,a3,a4,a5;b1,b2,b3,b4,b5;…

如果没有,你需要“大块”你的阵列。

var myData = $("#txtproduction").val().split(','),
    columnsPerRecord = 5,
    record;
while (myData.length) {
    // iterate/create div here
    record = myData.splice(0, columnsPerRecord);
    $(currentDiv).find('.serialno').val(record[0]);
    …
}