【js】vue获取document.getElementById(a)为null

这篇具有很好参考价值的文章主要介绍了【js】vue获取document.getElementById(a)为null。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求

在菜单A页面点击某个元素携带id跳转到B详情页面,B页面获取该id元素的offsetTop, 并自动滚动到该元素处

问题

跳转到B详情页面, 在mounted获取到document.getElementById(a)为null, 因为整个详情页面是从后端获取来渲染的数据, 因此此时dom元素还未渲染出来, 所以拿到的是null, 但是尝试过以下两种办法均无效:

  1. this.$nextTick(function() {}) 在这里获取dom, 无效
  2. 在接口请求完成后再获取元素, 无效
  3. 在created请求接口, mounted获取元素, 无效
  mounted() {
      this.id = this.$route.params.id;
      let a = "section" + this.id;
      var top = document.getElementById(a).offsetTop;
      $(window).scrollTop(top + 300);
      $("#myNav").affix({
        offset: {
          top: 300
        }
      });
  },

解决

还是得用上计时器做点延迟才行…文章来源地址https://www.toymoban.com/news/detail-740770.html

  mounted() {
    setTimeout(() => {
      this.id = this.$route.params.id;
      let a = "section" + this.id;
      var top = document.getElementById(a).offsetTop;
      $(window).scrollTop(top + 300);
      $("#myNav").affix({
        offset: {
          top: 300
        }
      });
      var wow = new WOW();
      wow.init();
    }, 300);
  },

到了这里,关于【js】vue获取document.getElementById(a)为null的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3使用ref获取dom结果为‘null’

    在vue2中,我们使用ref获取dom元素时是这样子的: 在vue3中,我们使用ref获取dom元素时是这样子的: 下面来说说vue3中获取dom为空的原因: setup的return中应该抛出ref封装的字段,否则ref的值只是定义了并不能响应式使用,事实上,所有ref或者reactive定义的值都应在return中抛出。

    2024年02月12日
    浏览(40)
  • JavaScript - 判断当前时间是否在指定区间内,例如:9:00~12:00(检查当前时间是否处于规定的两个时间段范围内),适用于 vue.js / uniapp / 微信小程序等前端项目

    例如,您想知道当前时间是否处于 9:00 ~ 12:00 时间区间内,然后根据这个判断进而实现业务逻辑。 如下示例所示, 本文提供一个函数,您只需要传入 2 个时间区间,便可得出当前时间是否在该时间区间范围内: 您可以一键复制,直接粘贴到您的项目中。 您只需要传入开始时

    2024年02月16日
    浏览(50)
  • JS javascript 点击鼠标 鼠标事件 获取元素 获取元素Xpath

    js代码,鼠标在页面点击时,记录元素的Xpath 代码:  

    2024年02月15日
    浏览(36)
  • js/javascript获取时间戳的5种方法

    以下便是干货 1.获取时间戳精确到秒,13位 2.获取时间戳精确到毫秒,13位 3.获取时间戳精确到毫秒,13位 4.获取时间戳精确到毫秒,13位 5.获取时间戳精确到毫秒,13位 其它 在开发的中需要精确到秒的时候,推荐使用 第1种方法,也需要除以1000才行,如果是需要时间戳毫秒的推荐 +new D

    2024年02月11日
    浏览(33)
  • 【javascript】js获取数组中数值最大的数

    一、借助apply()的参数,获得最大值 由于max()里面参数不能为数组,所以借助apply(funtion,args)方法调用Math.max(),function为要调用的方法,args是数组对象,当function为null时,默认为上文,即相当于apply(Math.max,arr) 二、借助call()的参数,获得最大值 call()与apply()类似,区别是传入参数

    2024年02月11日
    浏览(33)
  • JavaScript获取时间(js中的new Date(),获取前7天时间)

    简述:我们在写Echarts的时候,难免会用到js中的new Date(),用来获取时间, 今天就来分享下它的用法,顺便做下笔记。 关于new Date()的一些js方法: 输出: 1、 获取前一段时间的日期 难点: 这里用到了setDate()方法,该方法用于实现日期的相加减,它接收一个整数,如果这个整

    2024年02月09日
    浏览(67)
  • jQuery.js - 前端必备的Javascript库

    作者: WangMin 格言: 努力做好自己喜欢的每一件事 jQuery.js 是什么? jQuery是一个快速简洁、免费开源易用的JavaScript框架, 倡导写更少的代码,做更多的事情 。它封装JavaScript常用的功能代码,提供了一种简便的JavaScript设计模式,以及我们开发中常用到的操作DOM的API,优化HTML文

    2024年02月05日
    浏览(50)
  • web前端框架JS学习之JavaScript类型转换

    vascript有多种数据类型,如字符串、数字、布尔等,可以通过typeof语句来查看变量的数据类型。数据类型转换就是数据类型之间相互转换,比如把数字转成字符串、把布尔值转成字符串、把字符串转成数字等,这在工作也是经常碰到的。 本期我们就给大家说说web前端框架JS学

    2024年02月10日
    浏览(42)
  • Could not read document: Unrecognized token ‘xxx‘: was expecting (‘true‘, ‘false‘ or ‘null‘)错误的解决方法

    今天写好 导入hive表 的接口,如下代码所示: 同时,使用 Ajax 调用 导入hive表 的接口,如下代码所示: 启动项目后,使用 chrome 浏览器测试,却报出如下错误: 即 Could not read document: Unrecognized token \\\'hiveTableName\\\': was expecting (\\\'true\\\', \\\'false\\\' or \\\'null\\\')n at [Source: java.io.PushbackInputStream

    2024年02月04日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包