如何获取本地json里面的数据?url地址怎么写?字体图标在火狐里不显示,按需加载的问题
来源:3-5 自由编程
慕妹2075046
2019-08-13 10:55:48
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>购物车</title>
<style>
* {
padding: 0;
margin: 0;
}
a {
text-decoration: none;
}
.cart {
width:308px;
position: relative;
margin:10px auto;
}
.dropdown-toggle {
width: 132px;
height: 40px;
position: absolute;
top: 0;
right: 0;
box-shadow: 1px -2px 4px 1px rgba(0, 0, 0, .1);
float:right;
background-color:red;
z-index: 1;
}
.dropdown-layer {
width: 308px;
position: absolute;
top: 40px;
left: 0;
box-shadow: 0px 1px 4px 2px rgba(0, 0, 0, .1);
display:none;
}
@font-face {font-family: "iconfont";
src: url('font/iconfont.eot?t=1564927555374'); /* IE9 */
src: url('font/iconfont.eot?t=1564927555374#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('font/data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAKEAAsAAAAABjgAAAI5AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcApAXwE2AiQDCAsGAAQgBYRtBzEbhgURBUTJPg7jZm50hcbO4Fo0oWr893j4HCvfT3IEoG4qCVn4rQJWJBwJU1ejWbKu7W5Nx3CPMRGqS/Z861n+R77d6aUp4zxOowwIuTX4xL3TPwookPmAchlj0FiTJnUBdXEgBbgXtslKKOOGsQte4HkCjUYti83Z7sPqFfa0QNyurl1QX/ArCkvVC7UNa4t4rkZ9epBueBZ9P/5aiXqSmsyu2H91y2Xrf3Q6GblSrTgdEAIEtLkGGcsoxOHG+F5ZMFbWGC8mOVZp8KOzWg1s4qhmwf46u7gZDMNE8KPTmypAgsfqqxP9k55AdF56uHj0xd33j3qOHHv56G2l+/Cb/9+B9t//9fDm4dc/bPXbWFgMtFsP/SxPpVGBYNvoh3vn2lb/q18V8OlO3abIVAxzUr8PR/AvpANbiiG3ralo0sbOpPMcVY0aUYXdnb5PNfScOB3q9Uxw1hnJkNWbJgtzGTWarEKteuk6NFqSb27ShS1FacCiC0Bod0XS6iOydneyMB+o0euPWu2xRKOj0bVnk9mo1CZGLejAnKGy1HvXLiouXWMxtZrz8oi9Rx6rEMRBVE7l2CMvsWA8FImIB8/UQQYuw7YlGJhqtBKUIkMahr7pTYGlbqZswpAmkAOMM1CxSM8H3YWqfH4NFSYtjTua6oJ7iI2qwUEsEA0gc00/qOlRrhkdFBJCeMBjpAMyMAq1WgQMzaNqyBKBckJ0kAqddn6oJthe1/3dHmhkG1M4Q7O6m5XuhabZDAA=') format('woff2'),
url('font/iconfont.woff?t=1564927555374') format('woff'),
url('font/iconfont.ttf?t=1564927555374') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('font/iconfont.svg?t=1564927555374#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family: "iconfont" !important;
font-size: 14px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-jiantou:before {
content: "\e612";
}
.dropdown-toggle i,
.dropdown-toggle a{
line-height:40px;
color:#fff;
font-size:14px;
}
.dropdown-toggle a{
margin:0 0 0 4px;
font-size:14px;
}
.dropdown-layer .item{
height:60px;
width:280px;
margin-left:10px;
border-bottom:1px solid #cfcfcf;
font-size:16px;
color:black;
}
.dropdown-layer>div:last-child{
border-bottom:none;
}
@font-face {font-family: "iconfont2";
src: url('font2/iconfont.eot?t=1565595673549'); /* IE9 */
src: url('font2/iconfont.eot?t=1565595673549#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('font2/data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAMsAAsAAAAAB0AAAALdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcAqCSIIgATYCJAMICwYABCAFhG0HMhtIBsgehXEbHZrTqKxAKP9TPPy3X7vv/9ll1hBLqpGOV9EQRU8nUcVio2QayUvY+ezs5yDPSVF3RmXMJp68yeTQbY7e5ORKJVhCX5VLqvwvMesT907/KPH5gHJce9OkLs3igALci/5FXSQFMsC0YewmAodwnUDdiDgmm7nFZcBaAuYF4koqbgbWuZAkWdksVGu2JvEGLOTi3vQe8MrfH/9EYU2hUgJ1uyc5bSD9K8E8szsjq44SQDyfA9YuSiwBEnFY69pmJlNLzNSDlLkJYF/VwZe50UhFu/3jEUQVqGyCIVV0T2IsudVvFiAh4wJwO6qA3GzWwOEJ+w77Yb3OYOfwyLGzZfb69Jfbdi50lyPn7FnF8CzLjRh0+vLSiY0LJ7aOx/od97LZufltr8p6jvNwMFQys7U/djh8EVS5Wlw2uxtmX+PEbXtwXxxEdm8H3trRmG2HaC2Tsr/6HEyF/MAG2/v+Pv8bywzG2J/e9o5bvjHTA6HTU6U20yp/Fnm/ZB/mec6xh7SviR5EfqhqinzvP/ZsMr/K5Ol914N0AO3HcttM+Pc/4/wmijQ6Jf/Ldgl8dCT48ED7MYF+HiDfozv41+KeXSmUAnORfHFtrnDB+h0a6upoA93X691Y3cCL5UI28HqeDsMpStkUmdhLqGhYRlW2grpFebsb+hBmItWwoE9B6HaAQqd3lLo9kIn9FhWDvqGqO8xQdxxuRzbMhNQ2i6BmitpgSxeUtmIVg6zUVlSXILFW0UyyUs6pQEQjjUIhT1DM5iEVInOs0LSLRZQykCFYCXOV25BCgaGaYBlqpTwJpepEPp+pexCvFSuBrQ0E0oxC2kAtukBSrTAVhg6mbEuvL4GIaSk0Iy0dA+EKCKEhHR0S4hH0IPNUql4d93KPRjsxEYpiQAwCU4JyFQeigCkMUtdPkkFaUTySEQm1RHytF9NXxVtfo/y6Q1AH9EXA8aV8irUd2lYJAgAAAAA=') format('woff2'),
url('font2/iconfont.woff?t=1565595673549') format('woff'),
url('font2/iconfont.ttf?t=1565595673549') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('font2/iconfont.svg?t=1565595673549#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont2 {
font-family: "iconfont" !important;
font-size: 14px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
padding-left:8px;
}
.icon-gouwuche:before {
content: "\e604";
}
.dropdown-layer span{
padding:0 6px;
}
.button{
position:absolute;
right:20px;
bottom:15px;
width:60px;
height:30px;
background:red;
line-height:30px;
font-size:12px;
border-radius: 2px;
color:#fff;
text-align: center;
}
.item-title,.item-total{
line-height:60px;
}
.img{
background:url(img/cart/1.png) no-repeat;
width:45px;
height:45px;
margin:10px 0 2px 6px;
}
.cart-item{
margin-left:96px;
margin-top:-50px;
display:block;
font-size:12px;
color:#757575;
}
.price{
display:block;
margin-left:90px;
margin-top:6px;
font-size:12px;
color:black;
}
.x{
display:block;
float:right;
right:10px;
/* //为什么这里设置top没有效果 */
margin-top:-25px;
}
.cart-empty{
background:url(空购物车.png) no-repeat;
}
.cart-active .dropdown-toggle{
background-color:#fff;
}
.cart-active a,
.cart-active i{
color:red;
}
.cart-active .dropdown-layer{
display:block;
}
.dropdown-arrow{
display:inline-block;
/* 因为icon的引入字体引入,为了防止箭头继承父元素的宽高,可以修改line-height */
}
/*公共的旋转样式(只要类名有-active的都可以用,如menu-active、card-active等)*/
[class*='-active'] .dropdown-arrow{
-o-transform:rotate(180deg);
-ms-transform:rotate(180deg);
-moz-transform:rotate(180deg);
-webkit-transform:rotate(180deg);
transform:rotate(180deg);
}
.transition{
transition:all 0.5s;
}
</style>
</head>
<body>
<!-- data-active位置定义属性 -->
<div class="cart dropdown" data-active='cart'>
<div class='dropdown-toggle'>
<i class='cart-icon iconfont2 icon-gouwuche'></i>
<a target='_blank' href=''>购物车 | </a>
<a class='count'>18</a>
<i class='dropdown-arrow iconfont icon-jiantou transition'></i>
</div>
<!-- 下拉列表 -->
<div class='dropdown-layer' data-active='cart'>
<div class='item item-title'>最新加入的商品</div>
<div id="html1"></div>
<div class='item-total'>
<span>共<span id="count1">0</span>件商品</span><span>共计<span id="count2">0.00</span></span>
<div class='button'>去购物车</div>
</div>
</div>
</div>
<script type="text/javascript" src='jquery.min.js'></script>
<script type="text/javascript" src='cart.js'></script>
<script>
(function ($) {
'use strick';
// var list = [];
//引入json文件,计算动态下拉菜单
Cart.prototype.getData = function () {
var url = '';//本地地址怎么写,json文件和HTML在同一目录下
$ajax({
url: url,
datatype: 'json',
timeout: 1,
}).done(function (data) {
var str = "";
var price = 0;
for (var i in data) {
price += data['price'][i];
str += `<div class='item '><img class='img' src='' /><a href='' class='cart-item'>` + data[i].name + `</a><span class='price'>¥` + list[i].price + `</span><span class='x'>X</span></div>`;
}
}).fail(function () {
if (str == "") str = "您的购物车没有商品"
$('.dropdown-layer').addClass('.cart-empty');
});
}
$("#html1").html(str);
$("#count1").html(data['name'].length);
$("#count2").html(price);
//下拉菜单动画
function dropdown(element) {
var $element = $(element),
//拼接class名称的方法
activeClass = $element.data('active') + '-active';
//获取自定义属性(data-active) data('active')
//添加事件
$element.hover(function () {
$element.addClass(activeClass);
}, function () {
$element.removeClass(activeClass);
});
}
$.fn.extend({
dropdown: function () {
return this.each(function () {
dropdown(this);
});
}
})
$('.dropdown').dropdown();
//按需加载,这段代码应该写在获取数据之前?如何联系起来呢?
var cache = {
data: {},
count: 0,
addData: function () {
if (!this.data[key])
this.data[key] = data;
this.count++;
},
readData: function (key) {
return this.data[key];
},
deleteDataBykey: function (key) {
delete this.data[key];
this.count--;
},
deleteDataOrder: function (num) {
var count = 0;
for (var p in this.data) {
if (count >= num) {
break;
}
count++;
this.daleteDataByKey(p);
}
}
}
</script>
</body>
</html>
按需加载应该放在哪里?按需加载如何与前面的代码联系起来?
1回答
好帮手慕码
2019-08-13
同学你好!
因为没有同学的全部代码,只有一这块代码无法运行。
(1)获取本地数据可以使用ajax,路径和图片等使用方法相同,如果是同一个路径下:$.ajax({url:"test1.json"}); 请求本地数据可能会有浏览器同源策略的限制提示跨域,可以在服务器中查看

(2)字体在火狐中不显示,可能是火狐浏览器的限制,可在服务器中尝试查看
(3)按需加载:可以使用定时器模拟延迟,在红色框那一块写调用数据的函数

如果帮助到了你 欢迎采纳 祝学习愉快~
相似问题