老师帮我看看,json获取有问题

老师帮我看看,json获取有问题

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta charset="utf-8">

<link rel="stylesheet" type="text/css" href="css/base.css">

<link rel="stylesheet" type="text/css" href="css/common.css">

<link rel="stylesheet" type="text/css" href="css/index.css">

<style type="text/css">

.testdiv{

width: 100px;

height: 100px;

background-color: red;

}

</style>

</head>

<body>

<div class="nav-site">

<div class="container">

<ul class="fl">

<li class="fl"><a href="javascript:;" class="dropdown-login">亲,请登录</a></li>

<li class="fl"><a href="javascript:;" class="dropdown-signup link">免费注册</a></li>

<li class="fl"><a href="javascript:;" class="dropdown-mobile link">手机逛慕淘</a></li>

</ul>

<ul class="fr">

<li class="menu dropdown fl" data-active="menu">

<a href="javascript:;" class="dropdown-toggle link">我的慕淘

<i class="dropdown-arrow"></i>

</a>

<ul class="dropdown-layer dropdown-left">

<li><a href="javascript:;" class="menu-item">已买到的宝贝</a></li>

<li><a href="javascript:;" class="menu-item">我的足迹</a></li>

</ul>

</li>

<li class="menu dropdown fl" data-active="menu">

<a href="javascript:;" class="dropdown-toggle link">收藏夹

<i class="dropdown-arrow"></i>

</a>

<ul class="dropdown-layer dropdown-left">

<li><a href="javascript:;" class="menu-item">收藏的宝贝</a></li>

<li><a href="javascript:;" class="menu-item">收藏的店铺</a></li>

</ul>

</li>

<li class="fl"><a href="javascript:;" class="nav-site-category link">商品分类</a></li>

<li class="menu dropdown fl" data-active="menu" data-load='js/dropdown.json'>

<a href="javascript:;" class="dropdown-toggle link">卖家中心

<i class="dropdown-arrow"></i>

</a>

<ul class="dropdown-layer dropdown-left">

<li><a href="javascript:;" class="menu-item">加载中</a></li>

<!-- <li><a href="javascript:;" class="menu-item">免费开店</a></li>

<li><a href="javascript:;" class="menu-item">已卖出的宝贝</a></li>

<li><a href="javascript:;" class="menu-item">出售中的宝贝</a></li>

<li><a href="javascript:;" class="menu-item">卖家服务中心</a></li>

<li><a href="javascript:;" class="menu-item">卖家服务中心</a></li> -->

</ul>

</li>

<li class="nav-site-service menu dropdown fl" data-active="menu">

<a href="javascript:;" class="dropdown-toggle link">联系客服

<i class="dropdown-arrow"></i>

</a>

<ul class="dropdown-layer dropdown-right">

<li><a href="javascript:;" class="menu-item">消费者客服</a></li>

<li><a href="javascript:;" class="menu-item">卖家客服</a></li>

</ul>

</li>

</ul>

</div>

</div>


<div class="testdiv"></div>

<button class="btnshow">显示</button>

<button class="btnhide">隐藏</button>

<script type="text/javascript" src="js/jquery.js"></script>

<script type="text/javascript" src="js/transition.js"></script>

<script type="text/javascript" src="js/dropdown.js"></script>

<script type="text/javascript" src="js/showHide.js"></script>

<script type="text/javascript" src="js/index.js"></script>

</body>

</html>



.container{

width: 1200px;

margin: 0 auto;

}

.link{

color: #4d555d;

}

.link:hover{

color: #f01414;

}


.dropdown{

position: relative;

}

.dropdown-toggle{

position: relative;

z-index: 2;

}

.dropdown-arrow{

display: inline-block;

vertical-align: middle;

}

.dropdown-layer{

display: none;

z-index: 1;

position: absolute;

overflow: hidden;

}

.dropdown-left{

left: 0;

}

.dropdown-right{

right: 0;

}




.menu .dropdown-toggle{

height: 100%;

display: block;

padding: 0 16px 0 12px;

border-left: 1px solid #f3f5f7;

border-right: 1px solid #f3f5f7;

}

.menu .dropdown-arrow{

width: 8px;

height: 6px;

margin-left: 8px;

}

.menu .dropdown-layer{

top: 43px;

background-color: #fff;

border: 1px solid #cdd0d4;

}

.menu-item{

display: block;

padding: 0 12px;

height: 30px;

line-height: 30px;

white-space: nowrap;

color: #4d555d;

}

.menu-item:hover{

background-color: #f3f5f7;

}

.menu.dropdown:hover .dropdown-layer{

}

.menu.dropdown:hover .dropdown-toggle{

}

.menu-active .dropdown-layer{

display: block;

}

.menu-active .dropdown-toggle{

border-color: #cdd0d4;

background-color: #fff;

}

.fadeOut{

visibility: hidden;

opacity: 0;

}

.slideUpDown{

height: 0 !important;

padding-top: 0 !important;

padding-bottom: 0 !important;

}


.nav-site{

width: 100%;

background-color: #f3f5f7;

}

.nav-site .container{

height: 44px;

line-height: 44px;

border-bottom: 1px solid #cdd0d4;

}

.dropdown-login{

color: #f01414;

}

.dropdown-signup{

margin-left: 10px;

}

.dropdown-mobile{

margin-left: 10px;

}

.nav-site-category,

.nav-site-service{

margin-right: 15px;

}



(function($){

function Dropdown(elem,options){

this.$elem=$(elem);

this.options=options

this.activeClass=this.$elem.data('active')+'-active';

this.layer=this.$elem.find('.dropdown-layer')

var self=this;

this.layer.showHide(options)

this.$elem.on('show shown hide hidden',function(e){

self.layer.trigger('dropdown-'+e.type,function(){

self.layer.height('auto')

self.layer.height(self.layer.height())

})

})

if(options.event==='click'){

this.$elem.on('click',function(){

self.show()

return false;

})

$(document).on('click',function(){self.hide()})

}else{

this.$elem.hover(function(){

self.show()

},function(){

self.hide()

})

}

}

Dropdown.DEFAULTS={

event:'hover',

css3:false,

js:false,

animation:'fade',

delay:1000

}

Dropdown.prototype.show=function(){

var self=this;

if(this.options.delay){

this.timer=setTimeout(function(){

self.$elem.addClass(self.activeClass);

self.layer.showHide('show')

},this.options.delay)

}else{

self.$elem.addClass(self.activeClass);

self.layer.showHide('show')

}

}

Dropdown.prototype.hide=function(){

if(this.options.delay){

clearTimeout(this.timer)

}

this.$elem.removeClass(this.activeClass)

this.layer.showHide('hide')

}


$.fn.extend({

dropdown:function(option){

return this.each(function(){

var dropdown=$(this).data('dropdown')

var options=$.extend({},Dropdown.DEFAULTS,typeof option==='object' && option)

if(!dropdown){

$(this).data('dropdown',dropdown=new Dropdown(this,options))

}

// var dropdown=new Dropdown(this,options)

if(typeof dropdown[option]==='function'){

dropdown[option]()

}

})

}

})

})(jQuery)



[

{

"url":"###",

"name":"免费开店"

},

{

"url":"###",

"name":"已卖出的宝贝"

},

{

"url":"###",

"name":"出售中的宝贝"

},

{

"url":"###",

"name":"卖家服务市场"

},

{

"url":"###",

"name":"卖家培训中心"

}

]



$('.dropdown').dropdown({

css3:true,

js:true,

animation:'slideUpDown'

});

$('.dropdown').on('dropdown-show',function(e,updateLayer){

var dataload=$(this).data('load')

var layer=$(this).find('.dropdown-layer')

var html=''

$.getJSON(dataload,function(data){

for(var i=0;i<data.length;i++){

html+='<li><a href="javascript:;" class="menu-item">'+data[i].name+'<\/a><\/li>'

}

console.log(html)

layer.html(html)

updateLayer()

})

})

console.log(window.mt.transition.end)

var testdiv=$('.testdiv')

testdiv.showHide({

css3:true,

animation:'slideUpDown'

})

$('.btnshow').on('click',function(){

// testdiv.showHide('show')

$('.dropdown').dropdown('show')

})

$('.btnhide').on('click',function(){

// testdiv.showHide('hide')

$('.dropdown').dropdown('hide')

})



(function($){

var transitionend=window.mt.transition

var silent={

init:function($elem){

if($elem.is(':hidden')){

$elem.data('status','hidden')

}else{

$elem.data('status','shown')

}

},

show:function($elem){

if($elem.data('status')==='show') return

if($elem.data('status')==='shown') return

$elem.data('status','show').trigger('show')

$elem.show();

$elem.data('status','shown').trigger('shown')

},

hide:function($elem){

if($elem.data('status')==='hide') return

if($elem.data('status')==='hidden') return


$elem.data('status','hide').trigger('hide')

$elem.hide();

$elem.data('status','hidden').trigger('hidden')

}

}

var css3={

fade:{

init:function($elem){

$elem.addClass('transition')

if($elem.is(':hidden')){

$elem.data('status','hidden')

$elem.addClass('fadeOut')

}else{

$elem.data('status','shown')

}

},

show:function($elem){

if($elem.data('status')==='show')return

if($elem.data('status')==='shown')return

$elem.data('status','show').trigger('show')

$elem.show()

$elem.one('transitionend',function(){

$elem.data('status','shown').trigger('shown')

})

setTimeout(function(){

$elem.removeClass('fadeOut')

},20)

},

hide:function($elem){

if($elem.data('status')==='hide')return

if($elem.data('status')==='hidden')return

$elem.one('transitionend',function(){

$elem.hide()

$elem.data('status','hidden').trigger('hidden')

})

$elem.addClass('fadeOut')

}

},

slideUpDown:{

init:function($elem){

$elem.height($elem.height())

$elem.addClass('transition')

if($elem.is(":hidden")){

$elem.data('status','hidden')

$elem.addClass('slideUpDown')

}else{

$elem.data('status','shown')

}

},

show:function($elem){

if($elem.data('status')==='show') return

if($elem.data('status')==='shown') return

$elem.data('status','show').trigger('show')

$elem.show()

$elem.off(transitionend.end).one(transitionend.end,function(){

$elem.data('status','shown').trigger('shown')

})

setTimeout(function(){

$elem.removeClass('slideUpDown')

},20)

},

hide:function($elem){

if($elem.data('status')==='hide') return

if($elem.data('status')==='hidden') return

$elem.data('status','hide').trigger('hide')

$elem.off(transitionend.end).one(transitionend.end,function(){

$elem.data('status','hidden').trigger('hidden')

$elem.hide()

})

$elem.addClass('slideUpDown')

}

}

}

// var testdiv=$('.testdiv')

// css3.fade.init(testdiv)

// $('.btnshow').on('click',function(){

// css3.fade.show(testdiv)

// })

// $('.btnhide').on("click",function(){

// css3.fade.hide(testdiv)

// })

// testdiv.on('show shown hide hidden',function(e){

// console.log(e.type)

// })



var defaults={

css3:false,

js:false,

animation:'fade'

}

function showHide($elem,options){

options=$.extend({},defaults,options)

var mode=null;

if(options.css3&&transitionend){

mode=css3[options.animation]||css3[defaults.animation]

}else if(options.js){

mode=js[options.animation]||js[defaults.animation]

}else{

mode=silent

}


mode.init($elem)

return{

show:$.proxy(mode.show,this,$elem),

hide:$.proxy(mode.hide,this,$elem)

}

}


$.fn.extend({

showHide:function(option){

return this.each(function(){

var $this=$(this)

var mode=$this.data('showHide')

if(!mode){

$this.data('showHide',mode=showHide($this,typeof option==='object' && option))

}

if(typeof mode[option]==='function'){

mode[option]()

}

})

}

})


})(jQuery)



(function(){

var transitionEndEventName={

transition:'transitionend',

MozTransition:'transitionend',

WebkitTransition:'webkitTransitionEnd',

OTransition:'oTransitionend'

}

var transitionend='',isSupport=false;

for(var name in transitionEndEventName){

if(document.body.style[name]!=undefined){

transitionend=transitionEndEventName[name]

isSupport=true;

break;

}

}

window.mt=window.mt||{}

window.mt.transition={

end:transitionend,

isSupport:isSupport

}

})()


正在回答

登陆购买课程后可参与讨论,去登陆

8回答

同学你好,这是因为数据加载的非常快,所以看不到加载中效果。例如把之前的定时器加上,让它过一会再添加到页面,就看到效果了。

祝学习愉快 ~

好帮手慕夭夭 2020-04-19 14:37:23

同学你好,updatelayer是更新高度的,但是因为self.layer.height()获取的高度为0,所以下拉菜单看不到。

http://img1.sycdn.imooc.com//climg/5e9bf0e009ed98ac08860123.jpg

这里只需要把高度设置为auto即可。把如下注释掉:

http://img1.sycdn.imooc.com//climg/5e9bf150090f6eb009930358.jpg

注释掉之后,下拉菜单高度可以撑开。这里不用写total了:

http://img1.sycdn.imooc.com//climg/5e9bf1860917fe1d01780247.jpg

祝学习愉快 ~


  • 提问者 慕粉1905369247 #1
    按照这样可以正常显示了,但是html里面的加载中loading没有显示
    2020-04-19 15:13:05
提问者 慕粉1905369247 2020-04-18 19:13:23

我那个updatelayer和现在你的total有什么区别吗?不都是实时更新一下高度吗?

好帮手慕慕子 2020-04-18 19:10:23

同学你好,如果去掉定时器的话,可以参考如下方式,更新下拉层高度:

http://img1.sycdn.imooc.com//climg/5e9adfc50962ea1b19420630.jpg

同学可以测试下,祝学习愉快~

  • 提问者 慕粉1905369247 #1
    我那个updatelayer和现在你的total有什么区别吗?不都是实时更新一下高度吗?
    2020-04-18 19:14:16
提问者 慕粉1905369247 2020-04-18 17:43:25

http://img1.sycdn.imooc.com//climg/5e9acb820946df0306240313.jpg

视频最后是可以把定时器去掉然后是可以正常显示的,我这个把定时器去掉下拉的数据就没有显示

好帮手慕慕子 2020-04-18 17:38:47

同学你好,老师测试同学的代码,添加个定时器就可以了

http://img1.sycdn.imooc.com//climg/5e9aca210998ff3620780712.jpg

同学可以测试下,如果还有疑问,可以将你修改后的代码粘贴过来,图文结合,详细描述下具体是哪里有问题,便于帮助同学准确的定位与解决问题。

祝学习愉快~

  • 提问者 慕粉1905369247 #1
    后面要把定时器去掉,然后就还是不显示了
    2020-04-18 17:40:04
提问者 慕粉1905369247 2020-04-18 15:41:52

还是有问题,老师,帮我看看

提问者 慕粉1905369247 2020-04-18 15:28:13

我知道了。。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码