浅谈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 相关文章推荐
JQUERY 设置SELECT选中项代码
Feb 07 Javascript
如何获取网站icon有哪些可行的方法
Jun 05 Javascript
JavaScript中的单引号和双引号报错的解决方法
Sep 01 Javascript
javascript实现带节日和农历的日历特效
Feb 01 Javascript
JavaScript中getUTCSeconds()方法的使用详解
Jun 11 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
Nov 27 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
May 28 Javascript
vue复合组件实现注册表单功能
Nov 06 Javascript
自定义vue组件发布到npm的方法
May 09 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
Oct 10 jQuery
javascript面向对象创建对象的方式小结
Jul 29 Javascript
浅谈如何优雅处理JavaScript异步错误
Nov 12 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中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
详解PHP数组赋值方法
2015/11/07 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
Javascript的this详解
2019/03/23 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
[01:20]PWL开团时刻DAY9——听说潮汐没用?
2020/11/10 DOTA
python 判断自定义对象类型
2009/03/21 Python
Python logging模块学习笔记
2014/05/24 Python
Python判断Abundant Number的方法
2015/06/15 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
用matplotlib画等高线图详解
2017/12/14 Python
python实现弹跳小球
2019/05/13 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
营销人才自我鉴定范文
2013/12/25 职场文书
网站推广策划方案
2014/06/04 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
学困生转化工作总结
2015/08/13 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang
我的收音机情缘
2022/04/05 无线电
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL