2014-10-07 3 views
0

Просто интересно, может ли кто-нибудь помочь мне.Нужна помощь с использованием «для цикла» извлечения данных из таблицы

Я создал таблицу, и с помощью Javascript я извлекаю все данные и помещаю их в div.

$(function() { 
    $('table').each(function() { 
     var output = "", 
      table = $(this), 
      rowHead = table.find('tbody tr th'), 
      rowSubject = table.find('thead tr th:not(:first-child)'), 
      rowContent = table.find('tbody tr td'), 
      copy = table.clone(); 

     output += '<div class="mobiled-table">'; 
     for (i = 0; i < rowHead.length; i++) { 
      output += '<div class="head">' + $(rowHead[i]).html() + '</div>'; 
      for (j = 0; j < rowSubject.length; j++) { 
       output += '<div class="subject">' + $(rowSubject[j]).html() + '</div>'; 
       output += '<div class="content">' + $(rowContent[i]).html() + '</div>'; 
      } 
     } 
     output += '</div>'; 
     $('table').append(output); 
    }); 
}); 

Все работает отлично, за исключением того, что класс .content работает неправильно. Я считаю, что использую неправильный цикл for for, или мне нужно создать еще один цикл for. Пожалуйста, обратите внимание на мой codepen, и вы увидите мою проблему

http://codepen.io/anon/pen/JrKBf

Я надеюсь, что кто-то может помочь.

+0

Вы не создали ** '.content' ** класс в css. ?? – prog1011

ответ

0

Поскольку rowContent содержит матрицу ячеек, но в массиве один измерения, вы должны перевести (I, J) на допустимый индекс для rowContent, который (i * 4) + j:

rowContent[i] 

следует заменить:

rowContent[(i*4) + j] 
+0

Это бриллиант. Большое спасибо – Richy

0

В более простой способ, вы можете сделать так,

var container=$("#container"); 
$("table tr:not(:first)").each(function() { 
    var heading = $(this).find("th").html(); 
    container.append('<div class="subject">' + heading + '</div>'); 
    $(this).find("td").each(function(i) { 
     container.append('<div class="subject">' + $("table th").eq($(this).index()).html() + '</div>'); 
     container.append('<div class="content">' + $(this).html() + '</div>'); 
    }); 
}); 

Fiddle

+0

Думаю, я посмотрю на это. Он выглядит намного чище, чем мой код. Спасибо за ваше время. Очень ценится. – Richy