浅谈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 相关文章推荐
javascript Ext JS 状态默认存储时间
Feb 15 Javascript
JavaScript DOM 学习第七章 表单的扩展
Feb 19 Javascript
分享20款好玩的jQuery游戏
Apr 17 Javascript
jQuery中prepend()方法用法实例
Dec 25 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
Feb 06 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
Jul 27 Javascript
纯javascript模仿微信打飞机小游戏
Aug 20 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
Apr 04 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
Mar 28 jQuery
详解jQuery获取特殊属性的值以及设置内容
Nov 14 jQuery
微信小程序中的列表切换功能实例代码详解
Jun 09 Javascript
JavaScript 反射学习技巧
Oct 16 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中GET变量的使用
2006/10/09 PHP
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
Extjs中常用表单介绍与应用
2010/06/07 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
js中继承的几种用法总结(apply,call,prototype)
2013/12/26 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
nodejs基础应用
2017/02/03 NodeJs
借助node实战JSONP跨域实例
2017/03/30 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
Python读取图片属性信息的实现方法
2016/09/11 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
python微信撤回监测代码
2019/04/29 Python
pyqt5使用按钮进行界面的跳转方法
2019/06/19 Python
python flask框架实现重定向功能示例
2019/07/02 Python
python中dict()的高级用法实现
2019/11/13 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
python如何删除列为空的行
2020/07/17 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
Java基础知识面试要点
2016/07/29 面试题
销售会计岗位职责
2014/03/15 职场文书
授权委托书(完整版)
2014/09/10 职场文书
二年级学生期末评语
2014/12/26 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
学校远程教育工作总结
2015/08/11 职场文书