#javascript #html #arrays #object
#javascript #HTML #массивы #объект
Вопрос:
Я собираю строковые данные JSON при нажатии кнопки. Каждый раз, когда я нажимаю кнопку, в массив добавляется другой продукт. Массив представляет собой массив объектов:
{SKU: "9372983-382L", retail_price: "11.75", list_price: "3.50", product_name: "Tennis balls"}
Как мне взять эту информацию и вставить ее в таблицу? допустим, у меня есть
<div id='table'>
<table>
</table>
</div>
JavaScript:
var prodArr=[{SKU: "9372983-382L", retail_price: "11.75", list_price: "3.50",
product_name: "Tennis balls"}];
function buildTable(data){
var table = document.getElementById('table');
const arr = data;
for(var obj of arr){
var row = document.createElement('tr');
for(var val of Object.values(obj)){
var col = document.createElement('td');
col.textContent = val;
row.appendChild(col);
}
table.appendChild(row);
}
}
buildTable(prodArr);
Я хотел бы добавить заголовки для SKU:, retail_price:, list_price: product_name: и текстовое поле для количества в каждой строке.
Комментарии:
1. Что вы уже пробовали? Мы ожидаем, что вы проведете свое исследование и предпримете попытку перед публикацией. Кроме того, вложение таблицы в a
div
является избыточным. Просто отдайте столуid
и проиграйтеdiv
.2. Вы случайно не знаете о
Document.createElement()
методе? Как насчетNode.textContent
свойства? Есть идеи?3. @Evgengorbunkov Это
document
, неDocument
.4. codepen.io/Postman507/pen/MWjQpKR — Это то, что у меня есть до сих пор, я хотел бы добавить заголовки для артикула: product_name: list_price: retail_price: количество: но количество здесь не указано, поэтому я бы хотел, чтобы текстовое поле было вставлено на место. Я также обновил свой исходный код, чтобы он соответствовал этому codepen.
Ответ №1:
Вы можете перебирать массив, использовать Object.values
для перебора значений объекта и использовать document.createElement
для создания новых строк таблицы для добавления в таблицу.
const table = document.getElementById('table');
const arr = [{SKU: "9372983-382L", retail_price: "11.75", list_price: "3.50", product_name: "Tennis balls"}];
for(const obj of arr){
const row = document.createElement('tr');
for(const val of Object.values(obj)){
const col = document.createElement('td');
col.textContent = val;
row.appendChild(col);
}
table.appendChild(row);
}
table, tr, td, th {
border: 1px solid black;
border-collapse: collapse;
padding: 2px;
}
<table id="table">
</table>
Комментарии:
1. Мы, как правило, не предоставляем ответы на плохие вопросы, которые здесь неуместны, в первую очередь, поскольку это просто привлекает больше плохих вопросов.