浅谈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 方法大全方便学习参考
Feb 25 Javascript
Js放到HTML文件中的哪个位置有什么区别
Aug 21 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
Mar 06 Javascript
js实现按座位号抽奖
Apr 05 Javascript
vue.js学习之vue-cli定制脚手架详解
Jul 02 Javascript
vue.js  父向子组件传参的实例代码
Oct 29 Javascript
vue axios 二次封装的示例代码
Dec 08 Javascript
Vue中div contenteditable 的光标定位方法
Aug 25 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
Sep 26 Javascript
cdn模式下vue的基本用法详解
Oct 07 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
May 08 Javascript
详解Howler.js Web音频播放终极解决方案
Aug 23 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
给初学者的30条PHP最佳实践(荒野无灯)
2011/08/02 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
使用laravel指定日志文件记录任意日志
2019/10/17 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
Django框架中的对象列表视图使用示例
2015/07/21 Python
Python实现的RSS阅读器实例
2015/07/25 Python
python url 参数修改方法
2018/12/26 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
python交易记录链的实现过程详解
2019/07/03 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
python实现翻译word表格小程序
2020/02/27 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
用python计算文件的MD5值
2020/12/23 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
致短跑运动员广播稿
2014/01/09 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
婚礼司仪主持词
2014/03/14 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP