解决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对数组的常用操作代码 数组方法总汇
Jan 27 Javascript
Jquery判断IE6等浏览器的代码
Apr 05 Javascript
jquery 跨域访问问题解决方法(笔记)
Jun 08 Javascript
jquery和javascript的区别(常用方法比较)
Jul 04 Javascript
js实现iframe跨页面调用函数的方法
Dec 13 Javascript
浅析AngularJS中的生命周期和延迟处理
Jun 18 Javascript
在Node.js应用中使用Redis的方法简介
Jun 24 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
Dec 18 Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 Javascript
angular写一个列表的选择全选交互组件的示例
Jan 22 Javascript
微信小程序中时间戳和日期的相互转换问题
Jul 09 Javascript
vue使用keep-alive保持滚动条位置的实现方法
Apr 09 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使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
PHP使用Redis实现Session共享的实现示例
2019/05/12 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
javascript页面加载完执行事件代码
2014/02/11 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
python日期相关操作实例小结
2019/06/24 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
Python Django中间件使用原理及流程分析
2020/06/13 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
python openCV自制绘画板
2020/10/27 Python
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
党员领导干部承诺书
2014/05/28 职场文书
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android