为了账号安全,请及时绑定邮箱和手机立即绑定

开始秒杀的按钮没看见

开始秒杀按钮始终不出现是什么原因?

var seckill={
   //packing seckill url of ajax
   URL:{
       now:function () {
           return '/seckill/time/now';
       },
       exposer:function (seckillId) {
           return '/seckill/'+seckillId+'/exposer';
       },
       execution:function (seckillId,md5) {
           return '/seckill/'+seckillId+'/'+md5+'/execution';
       }
   },
   //validator phone number
   validatePhone:function (phone) {
       if(phone && phone.length==11 && !isNaN(phone)){
           return true;
       }
       return false;
   },
   handlerSeckill:function (seckillId,node) {
       //handle execute logic ,control view logic,execute seckill
       node.hide().html('<button class="btn btn-primary btn-lg" id="killBtn">开始秒杀</button>');
       $.post(seckill.URL.exposer(seckillId),{},function (result) {
           if(result&&result['success']){
               var exposer=result['data'];
               if(exposer['exposed']){
                   //open seckill
                   //get seckill url
                   var md5=exposer['md5'];
                   var killUrl=seckill.URL.execution(seckillId,md5);
                   console.log("killUrl:"+killUrl);
                   //forbidden repeat click

                   $('#killBtn').one('click',function () {
                       //execute seckill request
                       //1.forbidden button click event at first
                       $(this).addClass('disabled');
                       //send seckill request
                       $.post(seckillUrl,{},function (result) {
                           if(result && result['success']){
                               var killResult=result['data'];
                               var state=killResult['state'];
                               var stateInfo=killResult['stateInfo'];
                               node.html('<span class="label label-success">'+stateInfo+'</span>');
                           }
                       });
                   });
                   node.show();
               }else{
                   //not open seckill
                   var now=exposer['now'];
                   var start=exposer['start'];
                   var end=exposer['end'];
                   //re calculate timing logic
                   seckill.countdown(seckillId,now,start,end);
               }
           }else{
               console.log('result'+result);//TODO
           }
       });
   },
   countdown:function (seckillId,nowTime,startTime,endTime) {
       var seckillBox=$('#seckill-box');
       console.log(nowTime);//TODO
       //judge time
       if(nowTime>endTime){
           //秒杀结束
           seckillBox.html('秒杀结束!');
       }else if(nowTime<startTime){
           //seckill is not open yet,bind timing event
           var killTime=new Date(startTime+1000);
           console.log(killTime);//TODO
           seckillBox.countdown(killTime,function (event) {
               //control time format
               var format=event.strftime('秒杀倒计时:%D天 %H时 %M分 %S秒');
               seckillBox.html(format);
               //timing is end,callback event
           }).on('finish.countdown',function () {
               //get seckill address,control reality logic,execute seckill
               seckill.handlerSeckill(seckillId,seckillBox);
           });
       }else{
           //seckill start
           seckill.handlerSeckill(seckillId,seckillBox);
       }
   },

   //seckill logic of detail page
   detail:{
       //init detail page
       init:function (params) {
           //phone number validator,timing interaction
           //planning our process of interaction
           //find number from cookie
           var killPhone=$.cookie('killPhone');
           var startTime=params['startTime'];
           var endTime=params['endTime'];
           var seckillId=params['seckillId'];
           //validator phone number
           if(!seckill.validatePhone(killPhone)){
               //bind phone
               //control output
               var killPhoneModal=$('#killPhoneModal');
               //view pop-up layer
               killPhoneModal.modal({
                   show:true,//show pop-up layer
                   backdrop:'static',//forbidden location closed
                   keyboard:false//close keyboard
               });
               $('#killPhoneBtn').click(function () {
                   var inputPhone=$('#killPhoneKey').val();
                   if(seckill.validatePhone(inputPhone)){
                       //put number in cookie
                       $.cookie('killPhone',inputPhone,{expires:7,path:'/seckill'});
                       //refresh page
                       window.location.reload();
                   }else{
                       $('#killPhoneMessage').hide().html('<label class="label label-danger">手机号错误</label>').show(300);
                   }
               });
           }
           //already login
           //timing interaction
           $.get(seckill.URL.now(),function (result) {
               if(result && result['success']){
                   var nowTime=result['data'];
                   //judge time
                   seckill.countdown(seckillId,nowTime,startTime,endTime);
               }
           });
       }
   }
}

正在回答

7 回答

补充修改

http://img1.sycdn.imooc.com//6054199500014e9112290230.jpg

http://img1.sycdn.imooc.com//6054199a0001855013100181.jpg

0 回复 有任何疑惑可以回复我~

请求是post,不是get

http://img1.sycdn.imooc.com//605410de0001d29313610194.jpg


0 回复 有任何疑惑可以回复我~

可能是你前面这块代码出错,俺这边是这样

https://img1.sycdn.imooc.com//5cfcfea80001c87615060538.jpg

0 回复 有任何疑惑可以回复我~

   node.hide().html('<button class="btn btn-primary btn-lg" id="killBtn">开始秒杀</button>').show();

隐藏了,要显示出来

0 回复 有任何疑惑可以回复我~

可以在网页 部分查看 console 面板现实信息,那个地方会将错误信息展示的,然后根据那里的错误体力,然后再回到 代码中进行修改

0 回复 有任何疑惑可以回复我~

else{
                   //not open seckill
                   var now=exposer['now'];
                   var start=exposer['start'];
                   var end=exposer['end'];
                   //re calculate timing logic
                   //seckill.countdown(seckillId,now,start,end);
               }

把seckill.countdown(seckillId,now,start,end);注释掉试试

0 回复 有任何疑惑可以回复我~

代码太多 看不了

主要的可能性是因为死循环,

这个代码其实有bug,

当一开始handlerSeckill走到else里面就死循环了,

请从这方面查起

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

开始秒杀的按钮没看见

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信