Цикличное создание таблиц в JS
У меня есть объект json.
{
"_id": "5f0f3919e9df2fb4d87d2320",
"name": "Hello",
"ru": "Привет",
"en": "Hello",
"es": "Hola",
"theme": "Приветствие",
"__v": 0
}
В дальнейшем, это будет большой массив из повторяющихся по структуре элементов. (ключи _id, name, ru, en, es, theme, __v будут везде)
Мне нужно,, чтобы посредством цикла for или же $each создавались таблицы по типу:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<table>
<tr>
<td>Name</td>
<td>Ru</td>
<td>En</td>
<td>Es</td>
<td>Theme</td>
</tr>
<tr>
<td>Hello</td>
<td>Привет</td>
<td>Hello</td>
<td>Hola</td>
<td>Приветствие</td>
</tr>
</table>
</body>
</html>
Подскажите, возможно ли это как-то реализовать на чистом js или jquery?
UPD: Код после ответа @Инквизитор :
const requestURL = 'http://localhost:3000';
const request = new XMLHttpRequest();
request.open("GET", requestURL);
request.responseType = "json";
request.send();
request.onload = function() {
const dataDB = request.response;
tableCycle(dataDB);
console.log(dataDB);
console.log(tableCycle(dataDB));
console.log(dataDB[0]["name"]);
};
function tableCycle(jsonObj) {
let output = "";
for(i = 0; i < jsonObj.lenght; i++) {
output +="<tr><td>";
output += jsonObj[i]["name"];
output += "</td><td>"
output += jsonObj[i]["ru"];
output += "</td><td>"
output += jsonObj[i]["en"];
output += "</td><td>"
output += jsonObj[i]["es"];
output += "</td><td>"
output += jsonObj[i]["theme"];
output += "</td></tr>"
}
document.write(output);
}
Ответы (2 шт):
Автор решения: Инквизитор
→ Ссылка
Легче легкого. Развейте дальше сами:
Массив с данными:
var phrases = [{
"_id": "5f0f3919e9df2fb4d87d2320",
"name": "Hello",
"ru": "Привет",
"en": "Hello",
"es": "Hola",
"theme": "Приветствие",
"__v": 0
},
{
"_id": "5f0f3919e9df2fb4d87d2321",
"name": "Good bye",
"ru": "Пока",
"en": "Good bye",
"es": "Vali davaj",
"theme": "Прощание",
"__v": 0
},
{
"_id": "5f0f3919e9df2fb4d87d2322",
"name": "Hate",
"ru": "Шоб вы так жили",
"en": "Hate",
"es": "$%#*!",
"theme": "Ненависть",
"__v": 0
}
]
Функция, генерирующая строки таблицы:
function drawTableEntries(topics) {
var temp = "";
for (i = 0; i < topics.length; i++) {
temp += "<tr><td>" + phrases[i].name + "<\/td><td>" + phrases[i].ru + "<\/td><td>" + phrases[i].en + "<\/td><td>" + phrases[i].es + "<\/td><td>" + phrases[i].theme + "<\/td><\/tr>";
}
document.write(temp);
}
Автор решения: cauf
→ Ссылка
Пусть у нас есть некоторый массив данных. Нужно создать и наполнить таблицу
// пример данных
var data = [
{value: "one", char: "A", literal: "a"},
{value: "two", char: "B", literal: "b"},
{value: "three", char: "C", literal: "c"}
];
// добавим саму таблицу на страницу
$('body').append('<table></table>');
// добавим шапку
$('body > table').append(
'<tr><th>№</th><th>Номер</th><th>Буква</th><th>Символ</th></tr>'
);
// пройдем уиклом по всем элементам массива и сгенерируем строки таблицы
data.forEach(function(item, i, arr){
$('body > table').append(
'<tr><td>' + (i + 1) + '</td><td>' + item.value + '</td><td>' + item.char + '</td><td>' + item.literal + '</td></tr>'
);
});
table, td, th {
border-collapse: collapse;
border-style: solid;
border-width: 1px;
border-color: grey;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
<p>Здесь будет таблица:</p>