浅谈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 qq右下角滑出窗口 sheyMsg
Mar 21 Javascript
Jquery Ajax方法传值到action的方法
May 11 Javascript
用JavaScript实现使用鼠标画线的示例代码
Aug 19 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
May 20 jQuery
基于JavaScript实现选项卡效果
Jul 21 Javascript
Angular 4.0学习教程之架构详解
Sep 12 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
Dec 18 jQuery
在nginx上部署vue项目(history模式)的方法
Dec 28 Javascript
如何从0开始用node写一个自己的命令行程序
Dec 29 Javascript
json解析大全 双引号、键值对不在一起的情况
Dec 06 Javascript
vuex实现购物车功能
Jun 28 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
Aug 31 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
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
php常用正则函数实例小结
2016/12/29 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
2011/04/02 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
优秀大学生的自我评价
2014/01/16 职场文书
承诺保证书格式
2015/02/28 职场文书
认识实习感想
2015/08/10 职场文书
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL