Таблица циклом
Ребята, нужна помощь в таблице, а именно по созданию таблицы циклом
Есть входящие параметры, [{…}, {…}, {…}, {…}] 1:{"Login1"} 2:{"Login2"} 3:{"Login3"} 4:{"Login4"} 5: length 4 Нужно создать в таблицу, с двумя полями, в первую колонку мы пишем логин, во вторую заполняем логины, после того как приходят новые данные мы обновляем таблицу, как это организовать? :help: |
SpaceAlarm,
:-? |
Цитата:
|
Цитата:
Цитата:
|
SpaceAlarm,
1. в чём проблема построить таблицу. 2. Цитата:
структура данных и таблицы неизвестна. пример нужен обьект в js и таблица в html. 3. Цитата:
|
Вот еще пример
Цитата:
|
Цитата:
Таблица: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> </head> <body> <table border="1"> <tr> <th>Группа</th> <th>Логин</th> </tr> <tr> <td>Администратор</td> <td>test1</td> </tr> <tr> <td>Пользователь</td> <td>test2</td> </tr> <tr> <td>Пользователь</td> <td>test3</td> </tr> <tr> <td>Пользователь</td> <td>test4</td> </tr> </table> </body> </html> 3. Как приходят новые данные, обновлять в таблице их |
SpaceAlarm,
по прежнему недостаточно данных, может кто-то другой догадается ... |
SpaceAlarm,
Цитата:
Куда и каким образом приходят эти данные? |
Цитата:
|
Цитата:
|
SpaceAlarm,
Цитата:
Что это такое? Цитата:
Цитата:
|
SpaceAlarm,
создать таблицу из массива это 10 строк, знать бы ещё что вам нужно. смотрите примеры, может сами справитесь http://javascript.ru/forum/showthrea...350#post444350 https://javascript.ru/forum/misc/355...t-tablicu.html |
Цитата:
|
SpaceAlarm,
Вопросы есть? |
Цитата:
|
Создание таблицы из массива обьектов
SpaceAlarm,
от вас требовались строки 26 - 29 :( :( :( <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> td{ text-align: center; border: solid 1px #0000FF; } table { border-collapse: collapse; border: 1px solid #0000FF; width: 300px; } </style> <script> window.addEventListener("DOMContentLoaded", function() { var data = [{client_nickname:"rrrrrrr", client_type:1}, {client_nickname:"yyyyyy", client_type:0}, {client_nickname:"yyy", client_type:0}, {client_nickname:"nnn", client_type:"x"}]; var type = {0 : "Пользователь", 1 : "Администратор"}; var thead = ["Группа","Логин"]; var filter = ["client_type", "client_nickname"]; function createTable(obj) { var table = document.createElement("table"); if (obj.data && obj.filter && obj.type) { obj.data.forEach(function(content, indx) { var tr = table.insertRow(indx); obj.filter.forEach(function(key, i) { var td = tr.insertCell(i); td.textContent = i ? content[key] : obj.type[content[key]] ? obj.type[content[key]] : "кто это?"; }); }); } if (obj.thead) { var thead = document.createElement("thead"); table.appendChild(thead); var tr = thead.insertRow(0); obj.thead.forEach(function(title) { var th = document.createElement("th"); th.textContent = title; tr.appendChild(th); }); } return table; } var table = createTable({thead:thead, data:data, filter:filter, type:type}); var parent = document.body; parent.appendChild(table); }); </script> </head> <body> </body> </html> |
Спасибо большое, так я же вам дал структуру в скриншоте, приходящего объекта
|
Цитата:
|
Цитата:
socket.on('test', function(data) { console.log(data.text.length); let num = data.text.length; for (var i = 0; i < num; i++) { $('#num').append('<tr><td>ID:</td><td>'+data.text[i].client_ids+'</td></tr>'); } }); Сейчас приходят данные с сервера, но они на странице добавляются один за одним, http://prntscr.com/hz4z49 Смысл того что, допустим есть 3 клиента, они с идами, 1,2,3 с сервера приходят эти иды каждую секунду, в место того чтобы они обновлялись просто, но они просто добавляются с низу, как это решить? |
SpaceAlarm,
запомнить и не добавлять больше, если ничего больше не изменяется, если будет изменение нужно знать что вы хотите изменить |
Цитата:
|
SpaceAlarm,
var out = {}; socket.on("test", function(data) { console.log(data.text.length); var num = data.text.length; for (var i = 0; i < num; i++) { var id = data.text[i].client_ids; if (!out[id]) { var tr = $("<tr><td>ID:</td><td>" + id + "</td></tr>").appendTo("#num"); out[id] = tr; } } }); |
Цитата:
|
SpaceAlarm,
if (!out[id]) если нет в обьекте такого свойства, создаём строку |
Цитата:
var tr = $("<tr><td>ID:</td><td>" + id + "</td></tr>").appendTo("#num"); |
SpaceAlarm,
var tr = document.querySelector("#num tbody").insertAdjacentHTML("beforeEnd", "<tr><td>ID:</td><td>" + id + "</td></tr>"); |
Цитата:
|
SpaceAlarm,
важны детали, телепаты но пасаран <table> <tbody id="num"> <tr id="channel_list" class="danger"></tr> </tbody> </table> <script> var id = 2; var tbody = document.querySelector("#num"); tbody.insertAdjacentHTML("beforeEnd", "<tr><td>ID:</td><td>" + id + "</td></tr>"); </script> |
Спасибо
|
SpaceAlarm,
лучше так, если tr нужно, а не просто вставка <table> <tbody id="num"> <tr id="channel_list" class="danger"></tr> </tbody> </table> <script> var id = 2; var tbody = document.querySelector("#num"); var tr = tbody.insertRow(tbody.rows.length); tr.insertAdjacentHTML("beforeEnd", "<td>ID:</td><td>" + id + "</td>"); </script> |
Цитата:
var list = {}; socket.on("lists", function(data) { console.log(data.text); let length = data.text.length; for (var i = 0; i < length; i++) { let login = data.text[i].nickname; if (!list[login]) { let tbody = document.querySelector("#num"); let tr = tbody.insertAdjacentHTML('beforeEnd', '<tr><td>User: '+i+'</td><td>' + login + '</td></tr>'); list[login] = tr; } } }); |
Цитата:
Цитата:
|
SpaceAlarm,
var list = {}; socket.on("lists", function(data) { console.log(data.text); let length = data.text.length; for (var i = 0; i < length; i++) { let login = data.text[i].nickname; if (!list[login]) { let tbody = document.querySelector("#num"); let tr = tbody.insertRow(tbody.rows.length); tr.insertAdjacentHTML("beforeEnd", '<td>User: '+i+'</td><td>' + login + '</td>'); list[login] = tr; } } }); |
Огромное спасибо
|
Часовой пояс GMT +3, время: 01:15. |