老师,能给我讲讲这题的思路吗?还有下面这段代码

老师,能给我讲讲这题的思路吗?还有下面这段代码


# 粘贴全部相关代码,切记添加代码注释(请勿截图)

<div id="app">

      <ul>

        <!-- 在此补充代码 -->

        <li

          @click="clickBtn(index)"

          :style="{'background':nowIndex == index ? item : '#073607'}"

          v-for="(item, index) in list"

        >

          {{item}}

        </li>

      </ul>

    </div>


    <script>

      var vm = new Vue({

        el: "#app",

        data: {

          list: ["green""pink""orange""purple"],

          nowIndex: 0,

        },

        methods: {

          // 在此补充代码

          clickBtn: function (index) {

            this.nowIndex = index;

          },

        },

      });

    </script>

在这里输入代码,可通过选择【代码语言】突出显示

正在回答

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

1回答

同学你好,问题解答如下:

该题主要是想实现点击li时,切换li的背景色。大体思路是:为每一个li都绑定style样式,从而显示、更新背景色;为每个li添加点击事件,点击某个li时,就将该li的背景色切换成数组list中对应的颜色。同学提供的代码,可以实现效果,结合同学的代码,老师为同学屡下思路:

  1. 遍历list,生成所有li,给每个li绑定点击事件,并将索引index传入到事件处理函数中:

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

  2. 设置变量nowIndex,用来记录当前第几个li需要设置背景色,默认是0,即索引为0的li,默认要显示背景色

  3. 背景色通过绑定style样式、并利用三元表达式来实现:

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

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

    初始时,nowIndex的值是0,对第一个li而言,它的index是0,它的item是“green”,所以第一个li的背景色是绿色;第二li的index是1,不等于nowIndex,因此第二个li的背景色是#073607,其余li同理。

  4. 点击li时,要对应切换nowIndex的值为当前li的索引:

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

    此时,如果点击的是第二个li,则nowIndex的值,变成1(索引)。由于nowIndex值改变,导致所有的li样式也动态更新:

    对第一个li而言,它的索引是0,不等于nowIndex,所以它的背景色变成#073607;对第二个li而言,它的索引是1,等于nowIndex,所以它的背景色变成item(list中索引为1的元素),即“pink”,其余li同理。

上述过程,就实现了本题的效果。

祝学习愉快!

  • 您好老师,list数组里面的值,就能确定颜色!!请问这个效果是怎么实现的呢?

    2021-12-23 21:44:36
  • 同学你好,解答如下:

    每个li上都绑定了行内样式,用来修改背景色:

    https://img1.sycdn.imooc.com//climg/61c52abd09a3b9e309900158.jpg

    nowIndex == index ? item : '#073607'这个三元运算的结果,就是background的属性值;即nowIndex == index ? item : '#073607'这个式子的结果决定li的背景色是什么。

    假设nowIndex 是0,第一个li的索引也是0,那么nowIndex == index 结果是true,因此初始时第一个li对应的item就是绿色,即第一个li背景色是绿色:

    https://img1.sycdn.imooc.com//climg/61c52be60957f7ed11480564.jpg

    当点击li时,会切换nowIndex的值,即切换各个li上nowIndex == index ? item : '#073607'的值,即会改变li的背景色。

    祝学习愉快!

    2021-12-24 10:12:51
  • 您好老师,三元运算符这里我明白了,我没有弄明白的是list数组里面的数值,它们不是for循环遍历时候显示在HTML页面上的文字吗?怎么就能决定当前点击的颜色呢?

     data: {

              list: ["green", "pink", "orange", "purple"],

              nowIndex: 0,

            },


    2021-12-24 17:46:34
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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