浅谈vue中document.getElementById()拿到的是原值的问题


Posted in Javascript onJuly 26, 2020

问题

两个界面都有id="test"的div,内容不同,路由切换的时候document.getElementById()拿到的是原界面的值。

问题代码

// 页面1
<div id="test">aaa</div>
// 页面2
<div id="test">bbb</div>

// 路由切换如下:
<transition name="card-fade">
 <router-view/>
</transition>
.card-fade-enter-active {
 animation: bounce-in 2s;
}

现象

从页面1跳转到页面2时,document.getElementById(‘test'),始终拿到的是aaa。

反之从页面2跳到页面1时,document.getElementById(‘test'),始终拿到的是bbb。

思考

见鬼了,document.getElementById()也有缓存吗??

于是,我在页面3上同样尝试document.getElementById(‘test'),当从页面1跳到页面3同样拿到aaa。

见鬼了,dom不会被销毁吗?

但是如果页面1跳转另一个新的页面4再跳回3,就显示document.getElementById(‘test')=null了。

也就是说dom没什么问题确实存在就能获取到,不存在就为空。

原因

转头一看路由跳转的时候,transition是啥?呀这个动画导致的啊!!!

因为我两个界面切换的时候有动画,所以从页面1切换页面2的那一秒getElementById(‘test')确实存在两个,而且拿到的是第一个。

反思

1、尽量不要出现ID相同的节点,即便页面不同,以为不会同时出现。

2、控制样式尽量不要通过#id,而是给节点附加样式.class,防止id因为各种原因修改而忘了修改对应样式。

补充知识:document.getElementById()获取一直为null

document.getElementById()获取一直为null的最常见的一个原因是js文件在head标签里

产生的加载顺序问题,导致get不到节点的信息

解决办法:

1.可以body标签下引入js文件

2.在引入语句<script type="text/javascript"> 里面加个defer=true属性

defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。

以上这篇浅谈vue中document.getElementById()拿到的是原值的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jQuery的为attr添加id title等效果的实现代码
Apr 20 Javascript
3款实用的在线JS代码工具(国外)
Mar 15 Javascript
javascript获取隐藏dom的宽高 具体实现
Jul 14 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
Jan 12 Javascript
javascript中不提供sleep功能如何实现这个功能
May 27 Javascript
Javascript模拟加速运动与减速运动代码分享
Dec 11 Javascript
Three.js学习之几何形状
Aug 01 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
Dec 26 Javascript
JavaScript实现时间表动态效果
Jul 15 Javascript
vue 自定义右键样式的实例代码
Nov 06 Javascript
javascript canvas封装动态时钟
Sep 30 Javascript
在antd4.0中Form使用initialValue操作
Nov 02 Javascript
关于vue 结合原生js 解决echarts resize问题
Jul 26 #Javascript
Element Tooltip 文字提示的使用示例
Jul 26 #Javascript
Element Popover 弹出框的使用示例
Jul 26 #Javascript
Element Card 卡片的具体使用
Jul 26 #Javascript
Element Carousel 走马灯的具体实现
Jul 26 #Javascript
three.js欧拉角和四元数的使用方法
Jul 26 #Javascript
Element Collapse 折叠面板的使用方法
Jul 26 #Javascript
You might like
PHP基础知识回顾
2012/08/16 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
javascript中FOREACH数组方法使用示例
2016/03/01 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
Python简单实现子网掩码转换的方法
2016/04/13 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
python pygame模块编写飞机大战
2018/11/20 Python
Python中Numpy mat的使用详解
2019/05/24 Python
基于django传递数据到后端的例子
2019/08/16 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
python二维键值数组生成转json的例子
2019/12/06 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
python字符串的index和find的区别详解
2020/06/20 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
医院总经理岗位职责
2014/02/04 职场文书
冬季安全检查方案
2014/05/23 职场文书
服务口号大全
2014/06/11 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang
box-shadow单边阴影的实现
2023/05/21 HTML / CSS