需求
json数据在另外一个.json
的文件中,在另一个html
文件中引入并处理,然后在页面中动态的显示这些数据。
数据准备
1.json数据文件
data = [
{
"goodUrl": "xxx",
"title": "xxx",
"imgUrl": "xxx",
"price": "xxx"
},
{
"goodUrl": "xxx",
"title": "xxx",
"imgUrl": "xxx",
"price": "xxx"
},
{
"goodUrl": "xxx",
"title": "xxx",
"imgUrl": "xxx",
"price": "xxx"
}
]
2.一个jQuery.js文件
数据处理
首先我们需要在html导入这份json数据,导入形式就像引入JavaScript外部脚本一样,在<head></head>
标签中导入即可,src
为数据文件所在位置:
<script type="text/javascript" src="./data/goodData.json"></script>
然后在页面中自定义<script></script>
标签中写如下代码来获取数据,这里先做一个演示怎么取数据
<script>
window.onload = goodList = () => {
console.log(data.length);
for (let item of data) {
console.log(item.goodUrl);//获取地址
console.log(item.title);//获取标题
...
}
}
</script>
其中:
这里的data就是在json文件中定义的数据名字
window.onload
让页面加载的时候就开始执行
通过以上的方式就可以解决获取数据的问题,下面就是如何添加到页面
首先看一下页面结构:
<body>
<div class="case-content-bg case-content-info">
<div class="case-box">
<h3 class="case-box-title">
<em>优惠正版软件下载</em>
<span>提供各种正版软件优惠下载</span>
</h3>
<div class="clearfix">
<div class="case-wrapper clearfix" id="goods-list">
<div class="case-item">
<div class="case-item-bg case-item-bg-office"></div>
<div class="case-item-title">动态数据</div>
<div class="case-item-doc">
<span style="color:red">动态数据</span>
<p>
<a href="动态数据" target="_blank">查看详情</a>
<a href="动态数据" target="_blank">前往购买</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
其中的动态数据
就是需要从json中获取的,那么使用刚才的办法,只需要遍历数据即可取到,然后通过innerHTML
方法就可以向页面里面添加,具体的代码如下:
<script>
// 页面加载的时候开始计算数据
window.onload = goodList = () => {
let goodItem = "";
for (let item of data) {
goodItem += "<div class='case-item'>" +
"<div class='case-item-bg case-item-bg-office'></div>" +
"<div class='case-item-title'>" + item.title + "</div>" +
"<div class='case-item-doc'>" +
"<span style='color:red'>¥ " + item.price + "</span>" +
"<p>" +
"<a href=" + item.goodUrl + '?' + cid + "target='_blank'>查看详情</a>" +
"<a href=" + item.goodUrl + '?' + cid + "target='_blank'>立即购买</a>" +
"</p>" +
"</div>" +
"</div>";
}
$("#goods-list")[0].innerHTML = goodItem;
}
</script>
这里使用for (let item of data)
来遍历,而不是for-i
变量,因为取到的数组的每一项是object格式,然后使用item.属性名
即可取值。
$("#goods-list")[0].innerHTML = goodItem;
其中goods-list
为需要添加的goodItem
模块的父级的ID值。goodItem
后面是+=
完整代码
具体完整代码如下:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>优惠正版软件下载-北忘山</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script src="./js/jquery.js"></script>
<!-- 引入数据 -->
<script type="text/javascript" src="./data/goodData.json"></script>
<script>
const cid = 'esujndjk';
// 页面加载的时候开始计算数据
window.onload = goodList = () => {
let goodItem = "";
for (let item of data) {
goodItem += "<div class='case-item'>" +
"<div class='case-item-bg case-item-bg-office'></div>" +
"<div class='case-item-title'>" + item.title + "</div>" +
"<div class='case-item-doc'>" +
"<span style='color:red'>¥ " + item.price + "</span>" +
"<p>" +
"<a href=" + item.goodUrl + '?' + cid + "target='_blank'>查看详情</a>" +
"<a href=" + item.goodUrl + '?' + cid + "target='_blank'>立即购买</a>" +
"</p>" +
"</div>" +
"</div>";
}
$("#goods-list")[0].innerHTML = goodItem;
}
</script>
</head>
<body>
<div class="case-content-bg case-content-info">
<div class="case-box">
<h3 class="case-box-title">
<em>优惠正版软件下载</em>
<span>提供各种正版软件优惠下载</span>
</h3>
<div class="clearfix">
<div class="case-wrapper clearfix" id="goods-list">
<div class="case-item">
<div class="case-item-bg case-item-bg-office"></div>
<div class="case-item-title"></div>
<div class="case-item-doc">
<span style="color:red"></span>
<p>
<a href="" target="_blank">查看详情</a>
<a href="" target="_blank">前往购买</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
暂无评论内容