2016-09-26 2 views
2

Как если у меня есть строка вар 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?? 

     } 

Пожалуйста, помогите мне, я уже думаю, что многие дней, но до сих пор не может понять, как решить эту проблему. Спасибо, что прочитали и ответили на мои вопросы.

ответ

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.

+0

Здравствуйте, благодарят ctor и #Walf, помогая мне в этом вопросе. Честно говоря, я уже выяснял свой собственный способ решить проблему, прежде чем я увидел этот ответ, но мне все равно нравится ваше решение и должно иметь отметки. Я попытаюсь использовать ваш код в будущем. Еще раз спасибо за помощь, и я очень благодарен. –

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]); 
    … 
} 
Смежные вопросы