老师,我按视频里敲得代码,咋运行不出来啊

老师,我按视频里敲得代码,咋运行不出来啊

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<style>
 .btnall{
 width:604px;
 height:100px;
 margin:0 auto;}
 .btn{
 width:300px;
 height:100px;
 float:left;
 background-color:green;
 border:1px solid black;
 }
 #box{
 width:602px;
 height:300px;
 background-color:red;
 position:relative;
 left:50%;
 margin-left:-301px;
 display:none;
 }
 .transition{
 transition:all 1s; 
 }
 .fadeout{
 visibility:hidden;
 opacity:0;
 }
 .slideUpDown{
  height:0 !important;}
</style>
<body>
<div class="btnall">
 <button class="btn" id="btn1"></button>
 <button class="btn" id="btn2"></button>
 </div>
 <div class="" id="box"></div>
 <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.0/jquery.js"></script>
 <script src=../js/transition.js></script>
 <script src=../js/showhide.js></script>
 
 <script>
 
 var box=$('#box');
 
  /* var showHide=window.mt.showHide(box,{
    css3:true,
    animation:'fade'
   });*/
  
   box.showHide({
    css3:true,
    animation:'fade'
   })
  
   $('#btn1').on('click',function(){
    //showHide.show(box);
   box.showHide('show');
   });
   $('#btn2').on('click',function(){
    //showHide.hide(box);
    box.showHide('hide');
   });
 </script>
</body>
</html>

showhide.js

var transition = window.mt.transition;
(function(){
 function init(e,hiddenback){
  if(e.is(':hidden')){
   e.data('status','hidden');
   if(typeof hiddenback==='function'){hiddenback();}
  
  }else{
   e.data('status','shown');
   
  }
 }
 
 function show(e,callback){
  if(e.data('status')==='show')return;
  if(e.data('status')==='shown')return;
  
  
  e.data('status','show').trigger('show');
  callback();
 }
 
 function hide(e,callback){
  if(e.data('status')==='hide')return;
  if(e.data('status')==='hidden')return;
  
  e.data('status','hide').trigger('hide');
  callback();
 }
 var silent={
   init:function(){},
   show:function(e){
    show(e,function(){
     e.show();
     e.data('status','shown').trigger('shown');
    })   
   },
   hide:function(e){
    
    hide(e,function(){
     e.hide();
     e.data('status','hidden').trigger('hidden');
    })
    
   }
   
 };
 
 var css3={
   fade:{
    init:function(e){
     css3._init(e,'fadeout');
    },
    show:function(e){
      css3._show(e,'fadeout');
    },
    hide:function(e){
      css3._hide(e,'fadeout');
    }
   },
   slideUpDown:{
    init:function(e){
     css3._init(e,'slideUpDown');
    },
    show:function(e){
     css3._show(e,'slideUpDown');
   },
    hide:function(e){
     css3._hide(e,'slideUpDown');
   }
   },
   slideLeftRight:{
    show:function(){
     
    },
    hide:function(){
     
    }
   },
   fadeSlideUpDown:{
    show:function(){
     
    },
    hide:function(){
     
    }
   },
   fadeSlideLeftRight:{
    show:function(){
     
    },
    hide:function(){
     
    }
   }
 };
 css3._init=function(e,className){
  e.addClass('transition');
  init(e,function(){
   e.addClass(className);
  });
 };

 
 css3._show=function(e,className){
  show(e,function(){
  e.off('transitionend').one('transitionend',function(){
    e.data('status','shown').trigger('shown');
   })
   e.show();
   setTimeout(function(){
    e.removeClass(className);},30);
  });
  };
 css3._hide=function(e,className){
  hide(e,function(){
  e.off('transitionend').one('transitionend',function(){
   
   e.data('status','hidden').trigger('hidden');
   e.hide();
  })
  
  setTimeout(function(){
   e.addClass(className);},30);
 
 });
 }; 
 var js={
   fade:{
    init:function(e){
     js._init(e);
    },
    show:function(e){
     js._show(e,'fadeIn')
    
    },
    hide:function(e){
     js._hide(e,'fadeOut')
   }
   },
   slideUpDown:{
    init:function(e){
     js._init(e);
    },
    show:function(e){
     js._show(e,'slideDown');    
    },
   hide:function(e){
    js._hide(e,'slideUp');
    }
   },
   slideLeftRight:{
    init:function(e){
    js._LRinit(e,{
     'width':0,
     'padding-left':0,
     'padding-right':0
    });
    
    },
    show:function(e){
     js._LRshow(e);
    },
   hide:function(e){
     js._LRhide(e,{
      'width':0,
      'padding-left':0,
      'padding-right':0
     });
    
   }
   },
   fadeslideUpDown:{
    init:function(e){
     js._LRinit(e,{
      'opacity':0,
      'height':0,
      'padding-top':0,
      'padding-bottom':0
     });
     
     },
     show:function(e){
      js._LRshow(e);
     },
    hide:function(e){
      js._LRhide(e,{
       'opacity':0,
       'height':0,
       'padding-top':0,
       'padding-bottom':0
      });
     
    }
   },
   fadeslideLeftRight:{
    init:function(e){
     js._LRinit(e,{
      'opacity':0,
      'width':0,
      'padding-left':0,
      'padding-right':0
     });
     
     },
     show:function(e){
      js._LRshow(e);
     },
    hide:function(e){
      js._LRhide(e,{
       'opacity':0,
       'width':0,
       'padding-left':0,
       'padding-right':0
      });
     
    }
   }
 }
 js._init=function(e,hiddenCallback){
  e.removeClass('transition');
  init(e,hiddenCallback);
 };
 js._show=function(e,mode){
  show(e,function(){
   e.stop()[mode](function(){
    e.data('status','shown').trigger('shown');
   });
  });
 }
 js._hide=function(e,mode){
  hide(e,function(){
   e.stop()[mode](function(){
    e.data('status','hidden').trigger('hidden');
   });
  });
 }
 js._LRinit=function(e,options){
  var styles={};
    
  for(var p in options){
   styles[p]=e.css(p);
  }
    
  e.data['styles']=styles; 
 
   init(e,function(){
    e.removeClass('transition');
    js._init(e,function(){
     e.css(options);
    });
    
    
   });
 }
 js._LRshow=function(e){
  show(e,function(){
   var styles=e.data['styles'];
   
   e.show();
   
    e.stop().animate(styles,function(){
     e.data('status','shown').trigger('shown');
    }); 
  });  
  }
 js._LRhide=function(e,options){
  hide(e,function(){
   e.stop().animate(options,function(){
    e.data('status','hidden').trigger('hidden');
    e.hide();
   });
  });
 
 }
 
 var defaults={
   css3:false,
   js:false,
   animation:'fade'
 }
 
 function showHide(e,options){
  var mode=null;
  
  if(options.css3&&transition.isSupport){
   mode=css3[options.animation]||css3[defaults.animation];
   css3[options.animation].init(e);
   return{
    show:css3[options.animation].show,
    hide:css3[options.animation].hide
   };
  }else if(options.js){
   mode=js[options.animation]||css3[defaults.animation];
  }else{
   mode=silent;
  }
  
  mode.init(e);
  return{
   show:$.proxy(mode.show,this,e),
   hide:$.proxy(mode.show,this,e)
  }
 }
 
 $.fn.extend({
  showHide:function(option){
   return this.each(function(){
    var $this=$(this),
     options=$.extend({},defaults,typeof option===('object')&&option)
     mode=$this.data('showHide');
    
    if(!mode){
     $this.data('showHide',mode=showHide($this,options));
    }
    
    if(typeof mode[option]==='function'){
     mode[option]();
    }
   })
  }
 })
 
 
 window.mt=window.mt||{};
 window.mt.showHide=showHide;
 
})(jQuery)

transition.js

(function () {
 var transitionEndEventName = {
  transition: 'transitionend',
  MozTransition: 'transitionend',
  WebkitTransition: 'webkitTransitionEnd',
  OTransition: 'oTransitionEnd 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
 };
})();


正在回答

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

2回答

同学你好,这里测试首先会报错,无法显示。还需要修改如下:

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

祝学习愉快~

提问者 慕用7018409 2020-07-13 19:05:30

显示没问题,就一按按钮就显示Cannot read property 'data' of undefined,明明之前运行时就可以显示的

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

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

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

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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