浅谈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 相关文章推荐
JS获取父节点方法
Aug 20 Javascript
js获取URL的参数的方法(getQueryString)示例
Sep 29 Javascript
浅析document.ready和window.onload的区别讲解
Dec 18 Javascript
jquery.mousewheel实现整屏翻屏效果
Aug 30 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
Nov 25 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
Jan 25 Javascript
JavaScript中的splice方法用法详解
Jul 20 Javascript
Vuex之理解Store的用法
Apr 19 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 Javascript
详解JavaScript添加给定的标签选项
Sep 17 Javascript
vue项目每30秒刷新1次接口的实现方法
Dec 04 Javascript
Vue Mint UI mt-swipe的使用方式
Jun 05 Vue.js
关于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网站基础优化方法小结
2008/09/29 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
php中使用GD库做验证码
2016/03/31 PHP
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
python微信好友数据分析详解
2018/11/19 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
机电一体化职业规划书
2014/01/07 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
校园活动策划方案
2014/06/13 职场文书
迎新生标语大全
2014/10/06 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2015年工程师工作总结
2015/04/30 职场文书
少年犯观后感
2015/06/11 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
Redis实现一个账号只能登录一个设备
2022/04/19 Redis
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电