admin管理员组文章数量:1323714
I have a an html file that has this snippet in it.
<div>
<table id="apps"></table>
</div>
I am receiving JSON data that looks like this:
{
"1": [
{
"A": "",
"B": "",
"C": "",
"D": "",
"E": ""
}
]
}
There will be exactly one "1"
, but there can be more than one dictionary within the list of "1"
. In this example, we only have one {}
within the list, []
, but there can exist multiple {}
of containing exactly five items like what is shown above.
I want to create a table from this data, where each row represents a single {}
within the []
and has five columns representing A, B, C, D, E respectively.
I am unsure if I should have the structure of this, the tags already in my html(this is not in my html code provided) and then populate these tags or should my function that loads this data in my html file, access table id="apps" and create these tags and then populate these tags? Which is better? and How might one acplish this efficiently?
I have a an html file that has this snippet in it.
<div>
<table id="apps"></table>
</div>
I am receiving JSON data that looks like this:
{
"1": [
{
"A": "",
"B": "",
"C": "",
"D": "",
"E": ""
}
]
}
There will be exactly one "1"
, but there can be more than one dictionary within the list of "1"
. In this example, we only have one {}
within the list, []
, but there can exist multiple {}
of containing exactly five items like what is shown above.
I want to create a table from this data, where each row represents a single {}
within the []
and has five columns representing A, B, C, D, E respectively.
I am unsure if I should have the structure of this, the tags already in my html(this is not in my html code provided) and then populate these tags or should my function that loads this data in my html file, access table id="apps" and create these tags and then populate these tags? Which is better? and How might one acplish this efficiently?
Share Improve this question edited Nov 4, 2016 at 0:03 nyedidikeke 7,6588 gold badges47 silver badges61 bronze badges asked Nov 3, 2016 at 23:41 Teodorico LevoffTeodorico Levoff 1,6592 gold badges27 silver badges48 bronze badges 1- 3 If this wasn't a homework assignment, I would strongly remend jQuery DataTables as it does an excellent job of converting JSON data into a table. – Doug Commented Nov 3, 2016 at 23:52
5 Answers
Reset to default 3Try this simple working example. I hope it will work as per your expectation.
var dataObj = {
"1": [{
"A": "",
"B": "",
"C": "",
"D": "",
"E": ""
},
{
"F": "",
"G": "",
"H": "",
"I": "",
"J": ""
},
{
"K": "",
"L": "",
"M": "",
"N": "",
"O": ""
}
]};
var dictionaryData = dataObj["1"];
for (var i in dictionaryData) {
var table = document.getElementById("apps");
var tr = document.createElement("tr");
var td = document.createElement("td");
for (var key in dictionaryData[i]) {
var txt = document.createTextNode(key);
td.appendChild(txt);
tr.appendChild(td);
}
table.appendChild(tr);
}
table, td {
border: 1px solid black;
}
<div>
<table id="apps"></table>
</div>
Don't know your requirements for the project, but I would skip all that trouble and use a library like DataTables. There are many ways to populate a table from AJAX or other data sources. Even if you are unable to tinker with table data source to ply with its standards, there is a method to reformat.
Your question is "Which is better: having the table row and cell tags already in the markup, or build them as I get data?"
I would say the better option is to build the data as you get the objects.
In pseduocode:
for each object in 1
make new row <tr></tr>
for each data in object
make new cell <td></td>
insert data into <td>[here]</td>
insert cell into <tr>[here]</tr>
insert filled row into "apps" by using it's ID
done
Does this suffice for what you wanted to know?
Check this demo:
var jsonResponse = {
"1": [{
"A": "",
"B": "",
"C": "",
"D": "",
"E": ""
},
{
"F": "",
"G": "",
"H": "",
"I": "",
"J": ""
}
],
"2": [{
"K": "",
"L": "",
"M": "",
"N": "",
"O": ""
},
{
"P": "",
"Q": "",
"R": "",
"S": "",
"T": ""
}
]
};
$.each(jsonResponse, function(outerKey, list) {
var row = $('<tr>', {
id: 'row_' + outerKey
});
$.each(list, function(innerKey, value) {
for (var key in value) {
var col = $('<td>', {
id: key,
text: key
})
row.append(col);
}
});
$('#apps').append(row);
});
<script src="https://ajax.googleapis./ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<table id="apps"></table>
</div>
CREATE PROC SearchAllTables
(
@SearchStr nvarchar(100)
)
AS
BEGIN
CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
SET NOCOUNT ON
DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET @TableName = ''
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
WHILE @TableName IS NOT NULL
BEGIN
SET @ColumnName = ''
SET @TableName =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
AND OBJECTPROPERTY(
OBJECT_ID(
QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
), 'IsMSShipped'
) = 0
)
WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
AND TABLE_NAME = PARSENAME(@TableName, 1)
AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
AND QUOTENAME(COLUMN_NAME) > @ColumnName
)
IF @ColumnName IS NOT NULL
BEGIN
INSERT INTO #Results
EXEC
(
'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
FROM ' + @TableName + ' (NOLOCK) ' +
' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
)
END
END
END
SELECT ColumnName, ColumnValue FROM #Results
END
exec SearchAllTables @SearchStr='Canada'
本文标签: javascriptCreating html table from JSON dataStack Overflow
版权声明:本文标题:javascript - Creating html table from JSON data - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742129020a2422073.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论