浅谈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 相关文章推荐
prototype Element学习笔记(篇一)
Oct 26 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
Jul 17 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
Dec 30 Javascript
jquery自动切换tabs选项卡的具体实现
Dec 24 Javascript
使用jQueryMobile实现滑动翻页效果的方法
Feb 04 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
Mar 03 Javascript
解析jQueryEasyUI的使用
Nov 22 Javascript
Javascript计算二维数组重复值示例代码
Dec 18 Javascript
原生js实现可拖动的登录框效果
Jan 21 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
Sep 18 Javascript
js实现选项卡效果
Mar 07 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类
2006/07/15 PHP
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
php获取从html表单传递数组的方法
2015/03/20 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
js实现图片轮换效果代码
2013/04/16 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
javascript判断office版本示例
2014/04/11 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
Python函数嵌套实例
2014/09/23 Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
详解python中各种文件打开模式
2020/01/19 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
大门门卫岗位职责
2013/11/30 职场文书
社区志愿者心得体会
2014/01/03 职场文书
数控机床专业自荐信
2014/05/19 职场文书
2014年外联部工作总结
2014/11/17 职场文书
办公楼租房协议书范本
2014/11/25 职场文书
世界环境日活动总结
2015/02/11 职场文书
《西门豹》教学反思
2016/02/23 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书