浅谈vue中document.getElementById()拿到的是原值的问题

 更新时间:2020年07月26日 13:33:24   作者:Beam007  
这篇文章主要介绍了浅谈vue中document.getElementById()拿到的是原值的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

问题

两个界面都有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()拿到的是原值的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解vue-cli快速构建vue应用并实现webpack打包

    详解vue-cli快速构建vue应用并实现webpack打包

    这篇文章主要介绍了详解vue-cli快速构建vue应用并实现webpack打包,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 手把手教你使用宝塔部署Vue项目

    手把手教你使用宝塔部署Vue项目

    这篇文章主要给大家介绍了关于如何使用宝塔部署Vue项目的相关资料,宝塔面板提供了非常方便的方式来部署 Vue 项目,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • vue动态组件之:is在组件中的使用场景

    vue动态组件之:is在组件中的使用场景

    这篇文章主要介绍了vue动态组件之:is在组件中的使用场景,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Vue实现点击按钮进行上下页切换

    Vue实现点击按钮进行上下页切换

    这篇文章主要介绍了Vue实现点击按钮进行上下页的切换,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • vue3中watch和watchEffect实战梳理

    vue3中watch和watchEffect实战梳理

    这篇文章主要介绍了vue3中watch和watchEffect实战梳理,watch和watchEffect都是vue3中的监听器,但是在写法和使用上是有区别的。下文介绍他们之间的方法及区别,需要的朋友可以参考一下
    2022-07-07
  • Vue如何将时间戳转换日期格式

    Vue如何将时间戳转换日期格式

    这篇文章主要介绍了Vue如何将时间戳转换日期格式,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • Vue基于el-breadcrumb实现面包屑功能(操作代码)

    Vue基于el-breadcrumb实现面包屑功能(操作代码)

    这篇文章主要介绍了Vue基于el-breadcrumb实现面包屑功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • vue中el-tab如何点击不同标签触发不同函数的实现

    vue中el-tab如何点击不同标签触发不同函数的实现

    el-tab本身的功能是点击之后切换不同页,本文主要介绍了vue中el-tab如何点击不同标签触发不同函数的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 浅谈element关于table拖拽排序问题

    浅谈element关于table拖拽排序问题

    本文主要介绍了element关于table拖拽排序问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • vue input标签通用指令校验的实现

    vue input标签通用指令校验的实现

    这篇文章主要介绍了vue input标签通用指令校验的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论