请问下老师,这个功能应该怎么实现呢?

请问下老师,这个功能应该怎么实现呢?

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

在使用vue循环后,怎样通过点击每一个索引来改变每一个尺码的背景颜色呢?

就是当点击第一项时候背景颜色变红,第二项的时候第二项变红,第一项为原来的颜色?

不会写这个代码了,思路有也就是现在能拿到每一项的索引,但是不知道里面具体如何书写,能帮帮我吗?

正在回答

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

2回答

同学你好,关于同学的疑问,解答如下:

1、通过添加class,来区分选中的是哪个li(选中的li背景颜色修改为红色)。

因为curId要与list中的每一项的id做比较(如果两者是相同的值,那么选中的就是哪一个li)。所以curId的初始值是-1,其实初始值只要不是0,1,2,都是可以的(如果是0,1,2其中一个的话,那么默认就会有一个被选中)。

2、item.id==curId是判断,如果当前的id属性与curId(索引)相等的话,返回值为true,那么就用isActive样式

this.curId = i是将点击的li的索引赋值给curId,如果curId的值与list中每一项的id相同,那么相同的哪一项就会被添加上isActive这个类名,从而改变背景颜色。

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

老师使用星星老师提供的代码,可以实现效果哦。如下:

初始时没有选中的项,效果如下:

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

点击哪一项,哪一项改变背景颜色。效果如下:
http://img1.sycdn.imooc.com//climg/5db2a00b09ea425a01960291.jpg

同学测试没有效果,可能是哪个地方有书写错误,可以直接复制星星老师提供的代码进行比较哦

同学如果是不理解,代码中也添加了注释,可以再理解下。这些知识后面的课程中会有讲解的,慢慢来,不要着急

如果还有其他疑问,为了高效的为同学解答,可以新建问题进行提问哦。

如果帮助到了你,欢迎采纳~祝学习愉快~

好帮手慕星星 2019-10-24 18:18:44

同学你好,

是需要通过索引去判断,可以在数据中加一个id,两者进行判断。老师给你举一个例子:

<template>
  <div>
    <ul>
      <!-- 对li循环遍历,绑定点击事件,方法为change,传入参数索引 -->
      <!-- 动态class中用一个对象,item.id==curId是判断,如果当前的id属性与curId(索引)相等的话,返回值为true,那么就用isActive样式 -->
      <li v-for="(item,i) in list" @click="change(i)" :class="{'isActive':item.id==curId}">
        {{item.name}}
      </li>
    </ul>
  </div>
</template>
<script>
export default {
  data() {
    return {
      list: [{
          name: '38号码',
          id: 0
        },
        {
          name: '39号码',
          id: 1
        },
        {
          name: '40号码',
          id: 2
        }
      ],
      // 初始化属性值为-1
      curId: -1,

    }
  },

  methods: {
    // 方法对curId属性赋值当前索引
    change(i) {
      this.curId = i;
    }
  }
}

</script>
<style>
li {
  list-style: none;
  width: 100px;
  height: 50px;
  line-height: 50px;
  margin-top: 10px;
  background: #ddd;
}

/*激活样式为红色*/
.isActive {
  background: red;
}

</style>

在学习过程中要慢慢积累,尝试着去做,才会进步哦。

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

  • 提问者 看不穿繁华 #1
    老师,我没明白,这里为什么要使用v-bind绑定class,我是说为什么要这里放class,就是想不到这里,用法我会的 还有就是默认值为啥是-1呢,不应该让他是true或者false的吗?
    2019-10-25 09:24:13
  • 提问者 看不穿繁华 #2
    而且为啥上面用的是item.id=curid, 但是下面在写逻辑时里面却让curid等于索引i了呢,怎么又不是id了呢?
    2019-10-25 09:30:56
  • 提问者 看不穿繁华 #3
    代码试了呀,不好没有反应的
    2019-10-25 14:14:05
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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