解决vue页面DOM操作不生效的问题


Posted in Javascript onMarch 17, 2018

现象:

使用Element UI渲染了一个树形结构,设计在鼠标移入每个节点是显示其中的操作按钮,效果如下:

解决vue页面DOM操作不生效的问题

下面是出错部分:

在新增节点后移入新增节点附近(图中是移入一级2),功能按钮的显示位置出现偏移

解决vue页面DOM操作不生效的问题

原因查找:

经过调试发现是在新增节点后,执行DOM操作获取节点时,取到的仍是之前的结构,新增的节点并未获取到。

原因分析:

猜测是vue使用的虚拟DOM,使得页面虽然已经渲染出来,但在Vue实例中让处在在虚拟DOM中,无法获取。

解决方法:

使用Vue.nextTick,看下官方材料:

解决vue页面DOM操作不生效的问题

‘在下次 DOM 更新循环结束之后执行延迟回调',这句话不是特别理解,不过可以看出DOM更新是一个循环的过程,在过程结束之前无法获取到真实的DOM元素(至于这个循环是多久,还在探索中)。而将DOM操作放在nextTick中操作便可以获取到更新后的DOM。

结果:

依据上述原理,将DOM操作的函数在更新数据后在nextTick里调用,实现了理想中的效果。

解决vue页面DOM操作不生效的问题

解决vue页面DOM操作不生效的问题

解决vue页面DOM操作不生效的问题

以上这篇解决vue页面DOM操作不生效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
键盘控制事件应用教程大全
Nov 24 Javascript
用jscript实现新建word文档
Jun 15 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 Javascript
js实现索引图片切换效果
Nov 21 Javascript
jquery实现转盘抽奖功能
Jan 06 Javascript
基于rem的移动端响应式适配方案(详解)
Jul 07 Javascript
Vue 组件间的样式冲突污染
Aug 31 Javascript
给vue项目添加ESLint的详细步骤
Sep 29 Javascript
浅谈mint-ui 填坑之路
Nov 06 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
Aug 19 Javascript
在layui中select更改后生效的方法
Sep 05 Javascript
vue中实现先请求数据再渲染dom分享
Mar 17 #Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
Mar 17 #Javascript
vue获取当前激活路由的方法
Mar 17 #Javascript
vue 实现复制内容到粘贴板clipboard的方法
Mar 17 #Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
Mar 17 #Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 #Javascript
vue实现a标签点击高亮方法
Mar 17 #Javascript
You might like
PHP 高手之路(一)
2006/10/09 PHP
用PHP实现的随机广告显示代码
2007/06/14 PHP
php+mysql 实现身份验证代码
2010/03/24 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
layui清除radio的选中状态实例
2019/11/14 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
毕业自我鉴定怎么写
2014/03/25 职场文书
双方协议书
2014/04/22 职场文书
同居协议书范本
2014/04/23 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
初二学生评语大全
2014/12/26 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
八月一日观后感
2015/06/10 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS