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 %}

posted on 2020-02-14 22:48 cherry_ning 阅读(1053) 评论(0) 收藏 举报
浙公网安备 33010602011771号