vue异步加载dom元素之后无法获得

本文探讨了Vue中异步DOM更新带来的问题,特别是在动态创建DOM元素后立即尝试访问这些元素时。介绍了两种解决方法:一是使用setTimeout进行延迟执行;二是推荐使用this.$nextTick()方法,确保DOM更新后执行特定代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue存在大量的异步加载问题,比如动态创建dom元素,若你紧接着去获取创建的dom元素是获取不到的。

解决办法:

第一种办法比较low,使用setTimeout方法,让获取dom的代码在动态创建元素之后一段时间(这个时间非常的短)去执行。但这种方法应该是存在风险的,不推荐。

第二种办法 在将要执行的代码上套一层 this.$nextTick()

例如:

this.$nextTick(function() {
        let grids = _that.$refs.datamessage;
        console.log(grids);
        for (let i = 0; i < grids.length; i++) {
          let xb = grids[i].getAttribute("index");
          //alert(xb);
          if (_that.value.indexOf(xb) != -1) {
            grids[i].setAttribute("ifSelect", "true");
            grids[i].style.backgroundColor = "#b3d8ff";
            grids[i].style.color = "#409eff";
          }
        }
      });

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值