laoshi老师

laoshi老师

function addClick(){

$('.menu-item').on('click','.plus',function(e){

//页面中的count+1

var $count = $(e.currentTarget).parent().find('.count');

$count.text(parseInt($count.text()||'0')+1);

//后台中的count+1

var $item = $(e.currentTarget).parents('.menu-item');

var itemData = $item.data('itemData');

itemData.chooseCount = itemData.chooseCount + 1;

});

$('.menu-item').on('click','.minus',function(e){

//页面中的count+1

var $count = $(e.currentTarget).parent().find('.count');

if($count.text()==0){

return;

}

$count.text(parseInt($count.text()||'0')-1);

//后台中的count+1

var $item = $(e.currentTarget).parents('.menu-item');

var itemData = $item.data('itemData');

itemData.chooseCount = itemData.chooseCount - 1;

});

}

这里的后台数据加减和  页面中的 数量同步,但是为什么 你只要查看过一次某个具体的商品的chooseCount的后台数据之后,你前台再重新对它增减,后台数据就不刷新了?意思就是这时候前台和后台的数量不一致了,后台还是上次的数据,前台是根据自己的加减实际变化的,除非刷新网页F5重来,不知道老师能不能听得明白?

正在回答

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

6回答

同学你好,对象是引用类型 ,指向的同一个地址,即使后面改变了,前面的也会跟着改。例如

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

改变了属性a的值

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

虽然第一次输出表面展示a的值为1,这是正常的。但是对象点开之后a的值为2,因为后面改变了a的值

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

自己可以测试理解下,祝学习愉快!

好帮手慕星星 2020-04-08 12:00:00

同学你好,老师是1,2,3,4 这样进行增加的,第一次点击增加1,输出数据中数量为1,第二次点击增加1,输出数据中数量为2,然后查看第一次输出的数据中,数据也变为了2(不是开始的1)。

之前回复中每一次输出的数据中数量都会变成4 ,并不是1,2,3 这就是老师截图中想要表达的意思。数据是发生改变的,并不是停留在每一次增加后的数据状态。

  • 我觉得他的意思是,每次点击加号后输出的应该是:如果后台数据会同步更新的话,那打印的应该是刚刚+1后的数量,比如原本是1,+1后为2那打印的应该也是2;再+1后为3那打印的应该就是3。 而老师您的回答结果是一直都是4,这是点击了4次加号打印的都是4吗?还是点击了4次加号,每点击一次加号,包括前面几次输出在内的所有输出内容里的chooseCount都会变为4呢(这个应该不太可能吧,因为是点击一次加号才会打印一次的吧)?所以这些4是点击了一次加号后打印了这好几个数据还是每点击一次加号打印一次数据呢?
    2020-06-27 10:32:33
  • 同学你好,是点击了4次加号,每点击一次输出一次,并且每点击一次加号,包括前面几次输出在内的所有输出内容里的chooseCount都会变为4,因为数据是同一个,所以会改变。自己也可以输出测试下,祝学习愉快!
    2020-06-27 17:34:40
  • 我使用的phpstudy和源码进行测试,不知道为什么我在源码中设置console没效果,所以不知道具体的点击和输出都是什么效果。 我对您回答中的疑问是,点击一次输出一次,前面输出的内容为什么会被后面的点击影响呢?点击一次只会是最新的一次输出,不应该是点击只会影响最新一次的输出结果吗?
    2020-06-27 19:19:59
好帮手慕星星 2020-04-08 10:23:33

同学你好,按照老师这种方式测试,每点击一次就会输出一次数据。然后在控制台查看输出的,有数量变化之后,全部输出(包括之前输出的)数据的chooseCount值都会发生改变

http://img1.sycdn.imooc.com//climg/5e8d355a09b90fe720220461.jpghttp://img1.sycdn.imooc.com//climg/5e8d357b0918d7d810170406.jpghttp://img1.sycdn.imooc.com//climg/5e8d358e090c637009520326.jpg

是没有问题的。建议按照老师这种方式进行测试下,祝学习愉快!

  • 提问者 RahodJoe #1
    老师,你不要一直用一样的菜品数量啊,你试着增减变成4之外的,你第一次 第二次都是4 ,怎么证明啊,你第一次是4,你第二次变成6 或者5 或者3 看看啊
    2020-04-08 10:53:42
好帮手慕星星 2020-04-06 10:45:42

同学你好,老师不知道同学是在控制台哪个部分查看的数据,这边设置之后重新输出是没有问题的,如下

http://img1.sycdn.imooc.com//climg/5e8a97a6095adac211420576.jpghttp://img1.sycdn.imooc.com//climg/5e8a97ca09357b4b18771234.jpg

自己可以再测试下,祝学习愉快!

  • 提问者 RahodJoe #1
    老师我就是像您这样查看的这个chooseCount,那我想 问问老师您,您现在的chooseCount是3对吧,前端页面的也是3,那您在目前不F5刷新的情况下,去对前端页面的这个3用加或者减使它变为不是3, 是4.5.2.1等其他都行,只要不是3,然后重新F12查看chooseCount,您看看他是不是还是3,没有变化为你增减之后的最新数据呢?我指的就是这个
    2020-04-08 01:16:29
好帮手慕糖 2020-04-04 20:40:11

同学你好,这个代码是没有后台的,说的后台是指哪里?另,是使用谷歌浏览器测试的吗?若是使用谷歌的话,可能需要清除缓存,建议:使用火狐测试。

祝学习愉快~

  • 提问者 RahodJoe #1
    老师我指的后台是后台数据,就是代码里面的item.chooseCount,F12查看的那个json数据...
    2020-04-04 21:28:22
提问者 RahodJoe 2020-04-04 18:09:02

这按道理来说算是一个bug?

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

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

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

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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