浅谈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 相关文章推荐
基于jsTree的无限级树JSON数据的转换代码
Jul 27 Javascript
Javascript 类、命名空间、代码组织代码
Jul 31 Javascript
CSS3实现动态背景登录框的代码
Jul 28 Javascript
JS控制伪元素的方法汇总
Apr 06 Javascript
Bootstrap零基础学习第一课之模板
Jul 18 Javascript
jQ处理xml文件和xml字符串的方法(详解)
Nov 22 Javascript
easyUI combobox实现联动效果
Jan 17 Javascript
Node.js使用gm拼装sprite图片
Jul 04 Javascript
详解开源的JavaScript插件化框架MinimaJS
Oct 26 Javascript
基于小程序请求接口wx.request封装的类axios请求
Jul 02 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
Jul 22 Javascript
vue中使用腾讯云Im的示例
Oct 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
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
javascript globalStorage类代码
2009/06/04 Javascript
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
JavaScript&quot;模拟事件&quot;的注意要点详解
2019/02/13 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
Python 时间处理datetime实例
2008/09/06 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
Python操作远程服务器 paramiko模块详细介绍
2019/08/07 Python
详解python itertools功能
2020/02/07 Python
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
单位接收函范文
2015/01/30 职场文书
音乐教师个人总结
2015/02/06 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技