解决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 相关文章推荐
javascript smipleChart 简单图标类
Jan 12 Javascript
js猜数字小游戏的简单实现代码
Jul 02 Javascript
Javascript window对象详解
Nov 12 Javascript
jquery插件NProgress.js制作网页加载进度条
Jun 05 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
js实现文字垂直滚动和鼠标悬停效果
Dec 31 Javascript
原生JS实现图片轮播效果
Dec 26 Javascript
解决Webpack 热部署检测不到文件变化的问题
Feb 22 Javascript
解决vue2中使用axios http请求出现的问题
Mar 05 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
Aug 28 Javascript
js实现上传图片并显示图片名称
Dec 18 Javascript
vue-router为激活的路由设置样式操作
Jul 18 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木马攻击防御之道
2008/03/24 PHP
js下函数般调用正则的方法附代码
2008/06/22 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
php中static和const关键字用法分析
2016/12/07 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
javascript function、指针及内置对象
2009/02/19 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
TypeScript中的方法重载详解
2019/04/12 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
python常用函数与用法示例
2019/07/02 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
通过实例学习Python Excel操作
2020/01/06 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
CSS3简单实现照片墙
2014/12/12 HTML / CSS
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
环保标语大全
2014/06/12 职场文书
七一建党节演讲稿
2014/09/11 职场文书
电气工程师岗位职责
2015/02/12 职场文书
同学聚会感言一句话
2015/07/30 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android