django报错:VM80:1 Uncaught ReferenceError: cart_del is not defined at <anonymous>:1:1

一、报错代码及原因

  1 {% extends 'df_goods/base.html' %}
  2 
  3 {% block head %}
  4 <script type="text/javascript">
  5     $(function(){
  6         total()
  7 
  8         //全选全消
  9         $('#check_all').click(function(){
 10             state=$(this).prop('checked');   // 获取当前全选框的状态
 11             $(':checkbox:not(#check_all)').prop('checked',state);   //将其他的选框都设置成这个状态
 12         })
 13 
 14         //选择
 15         $(':checked:not(#check_all)').click(function(){
 16             if($(this).prop('checked')){  //如果当前复选框被选中,再判断
 17                 if($(':checked').length+1==$(':checkbox').length){
 18                     $('#check_all').prop('checked',true)
 19                 }
 20             }
 21             else{
 22                 $('#check_all').prop('checked',false)
 23             }
 24         })
 25 
 26         //数量加
 27         $('.add').click(function(){    //为所有的 add绑定点击事件
 28             txt=$(this).next();     //定义当前点击元素的下一个元素
 29             txt.val(parseInt(txt.val())+1).blur()   //加上.blur是为了模拟移除元素焦点的场景
 30         })
 31 
 32         //数量减
 33         $('.minus').click(function(){
 34             txt=$(this).prev();
 35             txt.val(parseInt(txt.val())-1).blur()
 36         })
 37 
 38         //修改,在blur事件里ajax 提交
 39         $('.num_show').blur(function(){
 40             count=parseInt($(this).val());
 41             kucun=parseInt($(this).attr('kucun'))  //获取属性为kucun的值
 42             if(count<1){
 43                 alert('数量不能小于1');
 44                 $(this).val(1);
 45                 count=1;
 46                 $(this).focus();  //设置焦点
 47                 return;
 48             }
 49             else if(count>kucun){
 50                 alert('数量不可超过库存');
 51                 $(this).val(kucun);
 52                 count=kucun;
 53                 $(this).focus();
 54             }
 55 
 56             cart_id=$(this).parents('.cart_list_td').attr('id'); //获取当前商品的id
 57             $.get('/cart/edit'+cart_id+'_'+count+'/',function(data){
 58                 if(data.count==0){   //修改成功,计算总价
 59                     total()
 60                 }
 61                 else{    //修改失败,改为原来的值
 62                     $(this).val(data.count)
 63                 }
 64             })
 65         })
 66 
 67         //计算小计和总计
 68         function total(){
 69             total1=0
 70             total_count=0;
 71 
 72             $('.col07').each(function(){
 73                 //获取数量
 74                 count=$(this).prev().find('input').val();
 75                 //获取单价
 76                 price=$(this).prev().prev().text();
 77                 //计算小计
 78                 total10=parseFloat(count)*parseFloat(price);
 79                 //显示小计
 80                 $(this).text(total10.toFixed(2));
 81 
 82                 //加到总计上
 83                 total1+=total10;
 84                 //商品数量
 85                 total_count++;
 86             })
 87             //显示总计
 88             $('#total').html(total1);
 89             $('.total_count1').html(total_count);
 90         }
 91 
 92         //删除
 93         function cart_del(cart_id){
 94             del=confirm('确定要删除嘛?');
 95             if(del){
 96                 $.get('/cart/delete'+cart_id+'/',function(data){
 97                     if(data.ok==1){
 98                         $('ul').remove('#'+cart_id);    //获取所有的ul标签,并删除这条记录
 99                         total();
100                     }
101                 })
102             }
103         }
104 
105     })
106 </script>
107 
108 {% endblock head %}
109 
110 {% block center_content %}
111     <div class="total_count">全部商品<em>2</em></div>    
112     <ul class="cart_list_th clearfix">
113         <li class="col01">商品名称</li>
114         <li class="col02">商品单位</li>
115         <li class="col03">商品价格</li>
116         <li class="col04">数量</li>
117         <li class="col05">小计</li>
118         <li class="col06">操作</li>
119     </ul>
120     <!--<ul class="cart_list_td clearfix">-->
121         <!--<li class="col01"><input type="checkbox" name="" checked></li>-->
122         <!--<li class="col02"><img src="/static/images/goods/goods012.jpg"></li>-->
123         <!--<li class="col03">奇异果<br><em>25.80元/500g</em></li>-->
124         <!--<li class="col04">500g</li>-->
125         <!--<li class="col05">25.80元</li>-->
126         <!--<li class="col06">-->
127             <!--<div class="num_add">-->
128                 <!--<a href="javascript:;" class="add fl">+</a>-->
129                 <!--<input type="text" class="num_show fl" value="1">    -->
130                 <!--<a href="javascript:;" class="minus fl">-</a>    -->
131             <!--</div>-->
132         <!--</li>-->
133         <!--<li class="col07">25.80元</li>-->
134         <!--<li class="col08"><a href="javascript:;">删除</a></li>-->
135     <!--</ul>-->
136 
137     {% for cart in carts %}
138     <ul class="cart_list_td clearfix" id="{{cart.id}}">
139         <li class="col01"><input type="checkbox" name="" checked></li>
140         <li class="col02"><img src="/static/{{cart.goods.gpic}}"></li>
141         <li class="col03">{{cart.goods.gtitle}}<br><em>{{cart.goods.gprice}}/{{cart.goods.gunit}}</em><br><em>库存:<span id="goods_kucun">{{ cart.goods.gkucun }}</span></em></em></li>
142         <li class="col04">{{cart.goods.gunit}}</li>
143         <li class="col05">{{cart.goods.gprice}}元</li>
144         <li class="col06">
145             <div class="num_add">
146                 <a href="javascript:;" class="add fl">+</a>
147                 <input type="text" class="num_show fl" value="{{ cart.count }}" kucun="{{ cart.goods.gkucun }}">
148                 <a href="javascript:;" class="minus fl">-</a>    
149             </div>
150         </li>
151         <li class="col07">{{cart.goods.gprice}}元</li>
152         <li class="col08"><a href="javascript:cart_del({{ cart.id }});">删除</a></li>
153     </ul>
154     {% endfor %}
155 
156     <ul class="settlements">
157         <li class="col01"><input type="checkbox" name="" checked="" id="check_all"></li>
158         <li class="col02">全选</li>
159         <li class="col03">合计(不含运费):<span>¥</span><em id="total"></em><br>共计<b class="total_count1"></b>件商品</li>
160         <li class="col04"><a href="place_order.html">去结算</a></li>
161     </ul>
162 
163 {% endblock center_content %}

 

二、为什么会报错?

  具体原因应该是和html渲染过程有关。总之就是点击的时候立即执行,发现该函数还未定义。所以就报错了

三、解决办法

  不要把方法写在$(function(){ })里面,即直接写函数,不写window.onload函数或者JQ的ready方法

  1 {% extends 'df_goods/base.html' %}
  2 
  3 {% block head %}
  4 <script type="text/javascript">
  5     $(function(){
  6         total();
  7         
  8         //全选全消
  9         $('#check_all').click(function(){
 10             state=$(this).prop('checked');   // 获取当前全选框的状态
 11             $(':checkbox:not(#check_all)').prop('checked',state);   //将其他的选框都设置成这个状态
 12         })
 13 
 14         //选择
 15         $(':checked:not(#check_all)').click(function(){
 16             if($(this).prop('checked')){  //如果当前复选框被选中,再判断
 17                 if($(':checked').length+1==$(':checkbox').length){
 18                     $('#check_all').prop('checked',true)
 19                 }
 20             }
 21             else{
 22                 $('#check_all').prop('checked',false)
 23             }
 24         })
 25 
 26         //数量加
 27         $('.add').click(function(){    //为所有的 add绑定点击事件
 28             txt=$(this).next();     //定义当前点击元素的下一个元素
 29             txt.val(parseInt(txt.val())+1).blur()   //加上.blur是为了模拟移除元素焦点的场景
 30         })
 31 
 32         //数量减
 33         $('.minus').click(function(){
 34             txt=$(this).prev();
 35             txt.val(parseInt(txt.val())-1).blur()
 36         })
 37 
 38         //修改,在blur事件里ajax 提交
 39         $('.num_show').blur(function(){
 40             count=parseInt($(this).val());
 41             kucun=parseInt($(this).attr('kucun'))  //获取属性为kucun的值
 42             if(count<1){
 43                 alert('数量不能小于1');
 44                 $(this).val(1);
 45                 count=1;
 46                 $(this).focus();  //设置焦点
 47                 return;
 48             }
 49             else if(count>kucun){
 50                 alert('数量不可超过库存');
 51                 $(this).val(kucun);
 52                 count=kucun;
 53                 $(this).focus();
 54             }
 55 
 56             cart_id=$(this).parents('.cart_list_td').attr('id'); //获取当前商品的id
 57             $.get('/cart/edit'+cart_id+'_'+count+'/',function(data){
 58                 if(data.count==0){   //修改成功,计算总价
 59                     total()
 60                 }
 61                 else{    //修改失败,改为原来的值
 62                     $(this).val(data.count)
 63                 }
 64             })
 65         })
 66     });
 67 
 68 
 69     //计算小计和总计
 70     function total(){
 71         total1=0
 72         total_count=0;
 73 
 74         $('.col07').each(function(){
 75             //获取数量
 76             count=$(this).prev().find('input').val();
 77             //获取单价
 78             price=$(this).prev().prev().text();
 79             //计算小计
 80             total10=parseFloat(count)*parseFloat(price);
 81             //显示小计
 82             $(this).text(total10.toFixed(2));
 83 
 84             //加到总计上
 85             total1+=total10;
 86             //商品数量
 87             total_count++;
 88         })
 89         //显示总计
 90         $('#total').html(total1);
 91         $('.total_count1').html(total_count);
 92     }
 93 
 94     //删除
 95     function cart_del(cart_id){
 96         del=confirm('确定要删除嘛?');
 97         if(del){
 98             $.get('/cart/delete'+cart_id+'/',function(data){
 99                 if(data.ok==1){
100                     $('ul').remove('#'+cart_id);    //获取所有的ul标签,并删除这条记录
101                     total();
102                 }
103             })
104         }
105     }
106 </script>
107 
108 {% endblock head %}
109 
110 {% block center_content %}
111     <div class="total_count">全部商品<em>2</em></div>    
112     <ul class="cart_list_th clearfix">
113         <li class="col01">商品名称</li>
114         <li class="col02">商品单位</li>
115         <li class="col03">商品价格</li>
116         <li class="col04">数量</li>
117         <li class="col05">小计</li>
118         <li class="col06">操作</li>
119     </ul>
120     <!--<ul class="cart_list_td clearfix">-->
121         <!--<li class="col01"><input type="checkbox" name="" checked></li>-->
122         <!--<li class="col02"><img src="/static/images/goods/goods012.jpg"></li>-->
123         <!--<li class="col03">奇异果<br><em>25.80元/500g</em></li>-->
124         <!--<li class="col04">500g</li>-->
125         <!--<li class="col05">25.80元</li>-->
126         <!--<li class="col06">-->
127             <!--<div class="num_add">-->
128                 <!--<a href="javascript:;" class="add fl">+</a>-->
129                 <!--<input type="text" class="num_show fl" value="1">    -->
130                 <!--<a href="javascript:;" class="minus fl">-</a>    -->
131             <!--</div>-->
132         <!--</li>-->
133         <!--<li class="col07">25.80元</li>-->
134         <!--<li class="col08"><a href="javascript:;">删除</a></li>-->
135     <!--</ul>-->
136 
137     {% for cart in carts %}
138     <ul class="cart_list_td clearfix" id="{{cart.id}}">
139         <li class="col01"><input type="checkbox" name="" checked></li>
140         <li class="col02"><img src="/static/{{cart.goods.gpic}}"></li>
141         <li class="col03">{{cart.goods.gtitle}}<br><em>{{cart.goods.gprice}}/{{cart.goods.gunit}}</em><br><em>库存:<span id="goods_kucun">{{ cart.goods.gkucun }}</span></em></em></li>
142         <li class="col04">{{cart.goods.gunit}}</li>
143         <li class="col05">{{cart.goods.gprice}}元</li>
144         <li class="col06">
145             <div class="num_add">
146                 <a href="javascript:;" class="add fl">+</a>
147                 <input type="text" class="num_show fl" value="{{ cart.count }}" kucun="{{ cart.goods.gkucun }}">
148                 <a href="javascript:;" class="minus fl">-</a>    
149             </div>
150         </li>
151         <li class="col07">{{cart.goods.gprice}}元</li>
152         <li class="col08"><a href="javascript:cart_del({{ cart.id }});">删除</a></li>
153     </ul>
154     {% endfor %}
155 
156     <ul class="settlements">
157         <li class="col01"><input type="checkbox" name="" checked="" id="check_all"></li>
158         <li class="col02">全选</li>
159         <li class="col03">合计(不含运费):<span>¥</span><em id="total"></em><br>共计<b class="total_count1"></b>件商品</li>
160         <li class="col04"><a href="place_order.html">去结算</a></li>
161     </ul>
162 
163 {% endblock center_content %}

 

参考文章见:https://www.cnblogs.com/helloNico/p/10565108.html

posted on 2020-02-14 22:48  cherry_ning  阅读(1053)  评论(0)    收藏  举报

导航