解决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 技巧大全(新手入门篇)
May 12 Javascript
jquery1.4后 jqDrag 拖动 不可用
Feb 06 Javascript
JavaScript制作的可折叠弹出式菜单示例
Apr 04 Javascript
当达到输入长度时表单自动切换焦点
Apr 06 Javascript
jquery根据锚点offset值实现动画切换
Sep 11 Javascript
详解JavaScript的表达式与运算符
Nov 30 Javascript
jQuery操作iframe中js函数的方法小结
Jul 06 Javascript
node.js 中间件express-session使用详解
May 20 Javascript
vue弹窗组件的实现示例代码
Sep 10 Javascript
在vue中获取token,并将token写进header的方法
Sep 26 Javascript
Vue中jsx不完全应用指南小结
Nov 01 Javascript
Vant 中的Toast设置全局的延迟时间操作
Nov 04 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
类的另类用法--数据的封装
2006/10/09 PHP
Cakephp 执行主要流程
2010/03/24 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
Python操作MySQL数据库9个实用实例
2015/12/11 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
Python文件与文件夹常见基本操作总结
2016/09/19 Python
python实现SOM算法
2018/02/23 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
关于运动会的广播稿(10篇)
2014/09/12 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
大学军训决心书
2015/02/05 职场文书
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
python基于tkinter实现gif录屏功能
2021/05/19 Python
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers