Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Изменить таблицу (https://javascript.ru/forum/jquery/56830-izmenit-tablicu.html)

kolhoz 06.07.2015 08:41

Изменить таблицу
 
Привет. На сайте есть куча таблиц такого типа:
<table style="border-collapse: collapse; border: none; width: 487px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 1pt;">
<td >
<p><span >Name of the School</span></p>
</td>
<td >
<p><em><span >Location</span></em></p>
</td>
<td >
<p ><span >Type</span></p>
</td>
<td >
<p ><span >Age</span></p>
</td>
<td >
<p ><span >Gender </span></p>
</td>
</tr>
<tr style="height: 1pt;">
<td >
<p ><span >Abacus College</span></p>
</td>
<td >
<p><em><span >Oxford, Oxfordshire, SE</span></em></p>
</td>
<td >
<p ><span >Ind</span></p>
</td>
<td >
<p ><span >14-23</span></p>
</td>
<td >
<p ><span >Co</span></p>
</td>
</tr>
<tr style="height: 1pt;">
<td >
<p ><span >Abberley Hall</span></p>
</td>
<td >
<p><em><span >&nbsp;Worcester, Worcestershire, WM</span></em></p>
</td>
<td >
<p ><span >Ind</span></p>
</td>
<td >
<p ><span >2-13</span></p>
</td>
<td >
<p ><span >Co</span></p>
</td>
</tr>

</tbody>
</table>


Первая строка tr во всех таблицах как правило, содержат названия колонок.

Можно ли первую строку привести к такому виду?:

<thead>
  <tr>
    <th>Name of the School</th>
    <th>Location</th>
    <th>Type</th>
    <th>Age</th>
    <th>Gender</th> 
  </tr>
  </thead>


а потом чтобы начиналось тело таблицы

<tbody>
<tr></tr>
<tr></tr>
<tr></tr>
</tbody>

kolhoz 06.07.2015 09:09

Понял как заменить в первой строке все td на th.
<script>
$(document).ready(function(){

$('td').each(function(){
if($(this).parent('tr').index() == 0)
{   $(this).replaceWith('<th>' +
$(this).text() + '</th>'); } });

});
</script>


А как теперь обрамить первую строку <tr></tr> в теги <thead></thead> и все это вставить перед тегом <tbody></tbody>

kolhoz 06.07.2015 09:25

Тут привожу код, в котором в первой строке таблицы td заменены на th, а также первая строка tr обрамлена в тег thead. Подскажите как теперь тег <thead></thead> со всем содержимым вынести за тег <tbody> ??

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title></title>
	<link rel="stylesheet" href="">
	<script src="jquery-2.1.4.min.js"></script>
<script>
$(document).ready(function(){

$('td').each(function(){
if($(this).parent('tr').index() == 0)
{   $(this).replaceWith('<th>' +
$(this).text() + '</th>'); } });

});
</script>




</head>
<body>

<table>
<tbody>

<tr>
<td><p><span>Name of the School</span></p></td>
<td><p><span>Location</span></p></td>
<td><p><span>Type</span></p></td>
<td><p><span>Age</span></p></td>
<td><p><span>Gender </span></p></td>
</tr>

<tr>
<td><p><span>Abacus College</span></p></td>
<td><p><span>Oxford, Oxfordshire, SE</span></p></td>
<td><p><span>Ind</span></p></td>
<td><p><span>14-23</span></p></td>
<td><p><span>Co</span></p></td>
</tr>

<tr>
<td><p><span>Abberley Hall</span></p></td>
<td><p><span>Worcester, Worcestershire, WM</span></p></td>
<td><p><span>Ind</span></p></td>
<td><p><span>2-13</span></p></td>
<td><p><span>Co</span></p></td>
</tr>

</tbody>
</table>

<script>
$('table tr:first').each(function() {
     $(this).replaceWith('<thead>' + $(this).html() + '</thead>');
 });
</script>

</body>
</html>

laimas 06.07.2015 09:28

А по какой причине таблица не отдается сервером с уже необходимой структурой?

kolhoz 06.07.2015 09:30

Не знаю, сайт был сделан не мной, я его пока обслуживаю, а на сайте куча таблиц созданных по формату, указанным мной в первом посте.

рони 06.07.2015 09:32

kolhoz,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js">
</script>
  <script>
$(function() {
    var tables = $("table");
    tables.each(function(indx, table) {
        var tr = $("tr:first", table),
            thead = $("<thead/>").append(tr);
        $("td", tr).each(function(indx, td) {
            $(td).replaceWith($("<th/>", {
                text: $(td).text()
            }))
        });
        $(table).prepend(thead)
    })
  });
  </script>
</head>

<body>
<table>
<tbody>

<tr>
<td><p><span>Name of the School</span></p></td>
<td><p><span>Location</span></p></td>
<td><p><span>Type</span></p></td>
<td><p><span>Age</span></p></td>
<td><p><span>Gender </span></p></td>
</tr>

<tr>
<td><p><span>Abacus College</span></p></td>
<td><p><span>Oxford, Oxfordshire, SE</span></p></td>
<td><p><span>Ind</span></p></td>
<td><p><span>14-23</span></p></td>
<td><p><span>Co</span></p></td>
</tr>

<tr>
<td><p><span>Abberley Hall</span></p></td>
<td><p><span>Worcester, Worcestershire, WM</span></p></td>
<td><p><span>Ind</span></p></td>
<td><p><span>2-13</span></p></td>
<td><p><span>Co</span></p></td>
</tr>

</tbody>
</table>

  <table style="border-collapse: collapse; border: none; width: 487px;" border="1" cellspacing="0"
  cellpadding="0">
    <tbody>
      <tr style="height: 1pt;">
        <td>
          <p><span>Name of the School</span></p>
        </td>

        <td>
          <p><em><span>Location</span></em></p>
        </td>

        <td>
          <p><span>Type</span></p>
        </td>

        <td>
          <p><span>Age</span></p>
        </td>

        <td>
          <p><span>Gender</span></p>
        </td>
      </tr>

      <tr style="height: 1pt;">
        <td>
          <p><span>Abacus College</span></p>
        </td>

        <td>
          <p><em><span>Oxford, Oxfordshire, SE</span></em></p>
        </td>

        <td>
          <p><span>Ind</span></p>
        </td>

        <td>
          <p><span>14-23</span></p>
        </td>

        <td>
          <p><span>Co</span></p>
        </td>
      </tr>

      <tr style="height: 1pt;">
        <td>
          <p><span>Abberley Hall</span></p>
        </td>

        <td>
          <p><em><span> Worcester, Worcestershire, WM</span></em></p>
        </td>

        <td>
          <p><span>Ind</span></p>
        </td>

        <td>
          <p><span>2-13</span></p>
        </td>

        <td>
          <p><span>Co</span></p>
        </td>
      </tr>
    </tbody>
  </table>
</body>
</html>

kolhoz 06.07.2015 09:35

Спасибо. А можете пояснить код, какая строка что делает. Чтобы для себя я знал

рони 06.07.2015 09:47

kolhoz,
$(function() {
    var tables = $("table");// все таблицы
    tables.each(function(indx, table) { //цикл по таблицам
        var tr = $("tr:first", table), //нашли первую строку в таблице
            thead = $("<thead/>").append(tr); //создали элемент thead перенесли в него первую строку
        $("td", tr).each(function(indx, td) {//нашли все ячейки в первой строке
            $(td).replaceWith($("<th/>", { // заменили  в цикле на th
                text: $(td).text() // + текст самой ячейки (если нужны теги span, p  то заменить на  html : $(td).html() )
            }))
        });
        $(table).prepend(thead)  //thead вставить в начало таблицы
    })//обрабатываем  следущую таблицу
  });

kolhoz 06.07.2015 09:54

Спасибо

laimas 06.07.2015 10:34

Цитата:

Сообщение от kolhoz
Не знаю, сайт был сделан не мной, я его пока обслуживаю, а на сайте куча таблиц созданных по формату,

И что проблематично найти место, где либо описывается их шаблон, либо вывод их и внести изменения? Это какой-то абсурд отдавать клиенту html-код, который он еще должен приводить к нужному виду.


Часовой пояс GMT +3, время: 04:36.