javascript - Vue 错误Uncaught TypeError: todo[i].css is not a function
仅有的幸福
仅有的幸福 2017-07-05 11:08:46
[JavaScript讨论组]

在做一个todolist,有个按钮点击显示没有完成的todolist,思路是点击按钮方法遍历整个items,完成的item隐藏来达到显示全部未完成的item。
可是数组遍历item可以取到index值,但是无法改变css

请问是哪里出错了吗??真心求助

仅有的幸福
仅有的幸福

全部回复(4)
淡淡烟草味

todo[i].css('display', 'none'); 这是JQuery改变css样式的方法呀
贴出来的代码中也没有看到你有引用JQuery

Vue中如果没有引用JQuery,只能用原生JS来修改css样式

如:

todo[i].style.display = 'none'

// 或

todo[i].setAttribute('display', 'none')

// 或

todo[i].className = 'newClass'

.newClass {
    display: none;
}
给我你的怀抱

vue的思想是尽量少操作DOM,尽可能的只通过改变数据来改变视图;如果想实现点击按钮时切换显示对应状态的item,可以用计算属性来筛选出对应的数据

为情所困

Vue 提供了通过数据绑定样式的方案,因此其余回答都是不准确的。

<template>
  <p
    :style="{ color: demo.color }"
    :class="demo.isActive ? 'active' : ''"
  >
    Demo
  </p>
</template>

<script>
export default {
  data () {
    return {
      demo: { isActive: false, color: 'red' }
    }
  }
}
</script>
学习ing

一楼正解,vue应用中尽量采用数据驱动的开发模式,减少dom的操作。在DOM中关联的数据在data中提前初始化,或是在computed中有个处理,整个业务逻辑中仅仅是操作数据,从而达到响应式更新dom的目的。楼主出现的这个错误很明显是你的设置css的方式错了,去查查js或者jquery如何更改css。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号