解决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 相关文章推荐
jquery加载页面的方法(页面加载完成就执行)
Jun 21 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
Feb 16 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 Javascript
jQuery垂直多级导航菜单代码分享
Aug 18 Javascript
js图片轮播手动切换特效
Jan 12 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
May 12 Javascript
javascript按钮禁用和启用的效果实例代码
Oct 29 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
May 06 Javascript
详解可以用在VS Code中的正则表达式小技巧
May 14 Javascript
小程序实现新用户判断并跳转激活的方法
May 20 Javascript
浅谈layui 数据表格前后台传值的问题
Sep 12 Javascript
vue组件 keep-alive 和 transition 使用详解
Oct 11 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+mysql大量用户登录解决方案分析
2014/12/29 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
JavaScript将XML转成JSON的方法
2015/03/12 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
python抓取网页图片并放到指定文件夹
2014/04/24 Python
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
python和flask中返回JSON数据的方法
2018/03/26 Python
Django框架会话技术实例分析【Cookie与Session】
2019/05/24 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
Python telnet登陆功能实现代码
2020/04/16 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
戴尔新加坡官网:Dell Singapore
2020/12/13 全球购物
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
实习护士自荐信
2014/06/21 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
高三语文复习计划
2015/01/19 职场文书
证券区域经理岗位职责
2015/04/10 职场文书