美文网首页我爱编程
小程序中,如何切换通过wx:for渲染出来的DOM元素的clas

小程序中,如何切换通过wx:for渲染出来的DOM元素的clas

作者: 七八七七 | 来源:发表于2018-03-31 22:42 被阅读0次

<problem>


noselect.png selected.png

功能需求很简单,点击某个按钮,如果答题正确,被点击的按钮变为蓝色,否则变为红色。
在小程序中,是无法操作DOM元素的,如果用Jquery的话,$(this).addClass('red');真的简单粗暴,没办法,碰上问题了不能躲啊,想办法!
Baidu: “在小程序中动态操作DOM元素的class”


answer.png

此答案是运用data--xx向事件传递参数 + 三元运算符 实现的一个点击DOM元素,切换其class的原理。
比如我要把<button>按钮1</button>点击的时候变成红色
我就可以这样写
<button data-arg="{{1}}" class="{{ arg == 1 ? 'red' : '' }}" bindtap="changeColor">按钮1</button>
<button data-arg="{{2}}" class="{{ arg == 2 ? 'red' : '' }}" bindtap="changeColor">按钮2</button>
// 不知道在事件中如何获取data携带的数据的话,去翻一下小程序文档的 “事件”
事件触发的是第一个按钮,就会this.setData({ arg: event.currentTarget.dataset.arg }),此时第一个按钮变为红色,因为把arg设置为了1,
事件触发的如果是第二个按钮,同样,第二个按钮就会变成红色。

看到这里,似乎一切都很顺当,But! 问题来了,我要解决的问题不光是要变换颜色,而是在变换颜色之前还要加上一层逻辑,用户是否点击了正确的答案,如果答对,加的是蓝色的class,如果答错,加的是红色的class,又陷入了思考的漩涡中。。。

结果当然是想出来喽~
</problem>

<process>
解决思路:1: 一共要有两个class,.right对应正确的蓝色 .false对应错误的红色
2:给每个按钮都加上独一无二的标识 <button wx:for=""{{[选项array]}} data-index="index">
用途: 比如有四个选项,用户选择哪一个,我首先得确定用户操作的是哪个按钮,(和上方网友提供答案思路相同)
3: 然后判断用户如果选择正确,我就给他一个right的class,否则给他一个false的class。
思路是没有问题的,要怎么写呢?
</process>

<answer>


myanswer.png

由于是wx:for动态渲染的,所以不能把index写死,咱们正好用按钮的下标index来代替。
用户点击按钮之后,咱们会得到一个index值,表示的是第几个,我会把this.setData({classSelect: index)}写在点击事件里面。

view模板的四个按钮就会判断:
index != classSelect 吗? 不等于那就是没有任何class类喽;
比如如果点击的是第二个,第二个按钮会说 我等于!!!
接下来三元哥又会问他 你答对了吗就敢瞎按?
第二个按钮说我也不知道啊!
就在这时,系统会告诉三元哥,他是否答对,答对就给他right的class!
答错? 哼,firstBlood~~~~~~~

</answer>

<conclusion>
核心思想:用data数据中的两个属性来操控。
一个用于操控具体到哪个DOM节点,
另一个用于操控答案正确与否的Class
</conclusion>

相关文章

  • 小程序中,如何切换通过wx:for渲染出来的DOM元素的clas

    功能需求很简单,点击某个按钮,如果答题正确,被点击的按钮变为蓝色,否则变为红色。在小程序中,是无法操作DOM元素的...

  • 微信小程序开发拾遗(一)

    微信小程序 控制隐藏wx:if : 更高的切换消耗;hidden : 更高的初始渲染消耗;结论:如果需要频繁切换,...

  • wx:for 内部循环中如何获取外层循环的 item(当前循环元

    小程序使用wx:for指令进行DOM循环时,默认当前循环的元素为 item,这样在双层循环中内层就不能通过 ite...

  • 04微信小程序-视图与逻辑2

    wx:if 在小程序中,使用 wx:if="{{condition}}"来判断是否需要渲染该代码块 也可以用 wx...

  • jQuery的DOM操作1

    如何筛选jQuery对象 1,DOM对象和jQuery对象的区别 DOM对象(DOM元素)是浏览器的网页页面中渲染...

  • 条件渲染

    不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS 属...

  • 重绘和重排

    DOM树:表示页面结构。渲染树:表示DOM节点如何显示。 定义 当DOM元素影响了元素的几何属性(例如宽和高),浏...

  • Vue中v-if和v-show的区别

    v-if和v-show的区别 v-show的元素始终会被渲染并保存在DOM中,v-show只是简单的切换元素的CS...

  • React首次渲染

    一、虚拟DOM 在原生的JavaScript程序中,我们直接对DOM进行创建和更改,而DOM元素通过我们监听的事件...

  • 微信小程序:基础知识

    options 应用的生命周期: 页面的生命周期: 小程序常见的标签: 循环渲染: hidden属性用于切换元素的...

网友评论

    本文标题:小程序中,如何切换通过wx:for渲染出来的DOM元素的clas

    本文链接:https://www.haomeiwen.com/subject/yjencftx.html