解决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 select多选框的左右移动 具体实现代码
Jul 03 Javascript
基于jQuery实现简单的折叠菜单效果
Nov 23 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
Dec 04 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
jQuery中常用动画效果函数(日常整理)
Sep 17 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
Dec 28 Javascript
JavaScript 异步调用
Oct 25 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
Dec 20 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
Oct 19 Javascript
ES6基础之字符串和函数的拓展详解
Aug 22 Javascript
Vue中函数防抖节流的理解及应用实现
Apr 24 Javascript
js实现3D旋转相册
Aug 02 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自定义函数之递归删除文件及目录
2010/08/08 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
JavaScript 字符串连接性能优化
2008/12/20 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
react路由配置方式详解
2017/08/07 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
python cx_Oracle模块的安装和使用详细介绍
2017/02/13 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
Python Socket使用实例
2017/12/18 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
python版本五子棋的实现代码
2018/12/11 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
愚人节活动策划方案
2014/03/11 职场文书
幼教求职信
2014/03/12 职场文书
关于环保的建议书
2014/05/12 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
禁毒心得体会范文
2016/01/15 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书