我正在尝试使用jQuery将JSON文件读入动态HTML表。具体来说,我正在尝试在body类中的div内创建表。我一直在关注http://www.encodedna.com/jquery/read-json-file-push-data-into-array-and-convert-to-html-table-using-jquery.htm但是当我查看网页时,表格没有被创建。我确定我已将$ .getJSON指向正确的文件路径。如果您想查看我将用它编辑的任何特定代码。提前谢谢。
修改 - 添加脚本代码
<script type="text/javascript">
$(document).ready(function() {
$.getJSON("/js/na_lcs_results.json", function(data) {
var arrItems = [];
$.each(data, function(index, value) {
arrItems.push(value);
});
//Extract value for table header
var col = [];
for (var i = 0; i < arrItems.length; i++) {
if (col.indexOf(key) === -1) {
col.push(key);
}
}
}
//Create dynamic table
var table = document.createElement("table");
//Create HTML table header using extracted headers
var tr = table.insertRow(-1);
for (var i = 0; i < col.length; i++) {
var th = document.createElement("th");
th.innerHTML = col[i];
tr.appendChild(th);
}
//Add JSON data to table as rows
for (var i = 0; i < arrItems.length; i++) {
tr = table.insertRow(-1);
for (var j = 0; j < col.length; j++) {
var tabCell = tr.insertCell(-1);
tabCell.innerHTML = arrItems[i][col[j]];
}
}
//Add new table with JSON data to container
var divContainer = document.getElementById("showData");
divContainer.innerHTML = "";
divContainer.appendChild(table);
});
});
修改 - 我想要添加到
的Div类<div class="NA_LCS">
<h1>Welcome to the NA LCS page</h1>
<div id="showData"></div>
</div>
修改 - 表格的外部CSS页面
table, th, td {
margin: 10px 0;
border: solid 1px #333;
padding: 2px 4px;
font: 15px Abel; }
< script >
$('#home_button').click(function() {
$('.home_screen').fadeIn();
$('#mySidebar,.EU_LCS,.NA_LCS').fadeOut();
});
$('#EU_LCS_button').click(function() {
$('.EU_LCS').fadeIn();
$('#mySidebar,.home_screen,.NA_LCS').fadeOut();
});
$('#NA_LCS_button').click(function() {
$('.NA_LCS').fadeIn();
$('#mySidebar,.home_screen,.EU_LCS').fadeOut();
}); <
/script>
<
script >
function w3_open() {
document.getElementById("mySidebar").style.display = "block";
}
function w3_close() {
document.getElementById("mySidebar").style.display = "none";
} <
/script>
<!-- <script type="text/javascript">
$(document).ready(function() {
$.getJSON("/js/na_lcs_results.json", function(data) {
var arrItems = [];
$.each(data, function(index, value) {
arrItems.push(value);
});
//Extract value for table header
var col = [];
for (var i = 0; i < arrItems.length; i++) {
if (col.indexOf(key) === -1) {
col.push(key);
}
}
}
//Create dynamic table
var table = document.createElement("table");
//Create HTML table header using extracted headers
var tr = table.insertRow(-1);
for (var i = 0; i < col.length; i++) {
var th = document.createElement("th");
th.innerHTML = col[i];
tr.appendChild(th);
}
//Add JSON data to table as rows
for (var i = 0; i < arrItems.length; i++) {
tr = table.insertRow(-1);
for (var j = 0; j < col.length; j++) {
var tabCell = tr.insertCell(-1);
tabCell.innerHTML = arrItems[i][col[j]];
}
}
//Add new table with JSON data to container
var divContainer = document.getElementById("showData"); divContainer.innerHTML = ""; divContainer.appendChild(table);
});
}); -->
<
/script>
<
script >
$(document).ready(function() {
$('#tabs').tabs();
$("accordion1").accordion();
$("#accordion2").accordion();
}); <
/script>
#mySidebar img {
width: 32px;
height: 32px;
}
.home_screen {
margin: 70px;
}
.NA_LCS {
display: none;
margin: 70px;
}
.EU_LCS {
display: none;
margin: 70px;
}
body {
background-color: #8c8c8c;
}
#banner {
background-image: url('../img/lol_universe_bg.jpg');
background-size: cover;
background-position: center;
width: 800;
height: 300px;
}
h1 {
font-family: 'Abel';
font-size: 48px;
text-align: center;
}
table,
th,
td {
margin: 10px 0;
border: solid 1px #333;
padding: 2px 4px;
font: 15px Abel;
}
th {
font-weight: bold:
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LoL Universe</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Abel">
<link rel="stylesheet" type="text/css" href="css/mystylesheet.css">
</head>
<body>
<div class="w3-sidebar w3-bar-block w3-black w3-animate-left" style="display:none" id="mySidebar">
<button class="w3-bar-item w3-button w3-large" onclick="w3_close()">Close ×</button>
<a href="#" class="w3-bar-item w3-button" id="home_button"><img src="img/icon_home.png"></a>
<a href="#" class="w3-bar-item w3-button" id="EU_LCS_button"><img src="img/EU_LCS_logo.png"></a>
<a href="#" class="w3-bar-item w3-button" id="NA_LCS_button"><img src="img/NA_LCS_logo.png"></a>
</div>
<div class="nav_button">
<button class="w3-button w3-white w3-xxlarge" onclick="w3_open()">☰</button>
</div>
<div id="banner"></div>
<div class="home_screen">
<h1>Welcome to LoL Universe</h1>
</div>
<div class="EU_LCS">
<h1>Welcome to the EU LCS page</h1>
</div>
<div class="NA_LCS">
<h1>Welcome to the NA LCS page</h1>
<!-- <div id="showData"></div> -->
</div>
</body>
</html>
答案 0 :(得分:0)
尽管我希望您已经找到了解决方案,但这里有一些更多详细信息可以帮助人们登陆此页面。
似乎有些小的修复可以使您的代码起作用(在列表中,使用jQuery从本地JSON文件数据中创建动态TABLE)。 UI / CSS方面不会在此答案中得到解决。
简而言之,当使用 encodedna.com 片段时,请正确复制它们:)
要在此处解决您的问题:首先(尽管不是必需的)创建一个单独的JavaScript文件,以使HTML简短易读...
myjavascript.js
$(document).ready(function() {
$.getJSON("na_lcs_results.json", function(data) {
var arrItems = [];
$.each(data, function(index, value) {
arrItems.push(value);
});
// extract value for table header
var col = [];
for (var i = 0; i < arrItems.length; i++) {
for (var key in arrItems[i]) {
if (col.indexOf(key) === -1) {
col.push(key);
}
}
}
// create dynamic table
var table = document.createElement("table");
// create HTML table header using extracted headers
var tr = table.insertRow(-1);
for (var i = 0; i < col.length; i++) {
var th = document.createElement("th");
th.innerHTML = col[i];
tr.appendChild(th);
}
// add JSON data to table as rows
for (var i = 0; i < arrItems.length; i++) {
tr = table.insertRow(-1);
for (var j = 0; j < col.length; j++) {
var tabCell = tr.insertCell(-1);
tabCell.innerHTML = arrItems[i][col[j]];
}
}
// add new table with JSON data to container
var divContainer = document.getElementById("showData");
divContainer.innerHTML = "";
divContainer.appendChild(table);
});
});
$('#home_button').click(function() {
$('.home_screen').fadeIn();
$('#mySidebar,.EU_LCS,.NA_LCS').fadeOut();
});
$('#EU_LCS_button').click(function() {
$('.EU_LCS').fadeIn();
$('#mySidebar,.home_screen,.NA_LCS').fadeOut();
});
$('#NA_LCS_button').click(function() {
$('.NA_LCS').fadeIn();
$('#mySidebar,.home_screen,.EU_LCS').fadeOut();
});
function w3_open() {
document.getElementById("mySidebar").style.display = "block";
}
function w3_close() {
document.getElementById("mySidebar").style.display = "none";
}
/*
$(document).ready(function() {
$('#tabs').tabs();
$("accordion1").accordion();
$("#accordion2").accordion();
});
*/
然后从以前的代码中删除所有JavaScript / jQuery代码,并按如下所示更新 HTML代码:
...
<div class="NA_LCS">
<h1>Welcome to the NA LCS page</h1>
<div id="showData"></div>
</div>
<script type="text/javascript" src="myjavascript.js"></script>
</BODY>
...
也许更好地构造代码并以干净的代码序列询问问题可能会有所帮助...希望这会有所帮助!