解决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常用全局属性与方法记录积累
Jul 03 Javascript
javascript实现支持移动设备画廊
Aug 24 Javascript
JS实现的3D拖拽翻页效果代码
Oct 31 Javascript
当jquery ajax遇上401请求的解决方法
May 19 Javascript
js仿新浪微博消息发布功能
Feb 17 Javascript
vue组件间通信解析
Mar 01 Javascript
ES6学习教程之模板字符串详解
Oct 09 Javascript
浅谈React和Redux的连接react-redux
Dec 04 Javascript
JavaScript循环遍历你会用哪些之小结篇
Sep 28 Javascript
vue之封装多个组件调用同一接口的案例
Aug 11 Javascript
基于jquery实现彩色投票进度条代码解析
Aug 26 jQuery
vue iview 隐藏Table组件里的某一列操作
Nov 13 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中global和$GLOBALS[]的分析之一
2012/02/02 PHP
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
php框架CodeIgniter主从数据库配置方法分析
2018/05/25 PHP
YII框架http缓存操作示例
2019/04/29 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
Python中给List添加元素的4种方法分享
2014/11/28 Python
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
Python测试模块doctest使用解析
2019/08/10 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
应届生骨科医生求职信
2013/10/31 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
技术经济专业求职信
2014/09/03 职场文书