账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vuejs 获取动态的dom节点,为什么点击两次才能获取到dom真实的宽?
    16
    0

    鼠标点击一次会动态生成dom插入el-ag,但是获取的父span却是不准确,感觉总是上一次的width,除非点击两次才能获取到,我想获取的就是el-select多选框生成的tag选项的宽

    <div class="el-select__tags">
        <span>
            <span class=“el-tag”>生成的dom1</span>
            <span class=“el-tag”>生成的dom2</span>
        </span>
    </div>
     computed: {
            valueData () {
                this.$nextTick(() =>{
                    // 在这里面去获取DOM
                    this.tagWidth = document.querySelector('.el-select__tags span').clientWidth
                    console.log(this.tagWidth )
                })
            }
        }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 年ilovehim 普通会员 1楼

      在 Vue.js 中,如果你尝试获取动态创建的 DOM 节点的宽度,但点击两次才能获取到,可能是因为以下原因:

      1. this.$el 可能是动态创建的节点的一个实例,而不是 DOM 元素本身。这意味着当你点击第一次时,Vue.js 创建了一个新的实例,并且在这个实例上计算了宽度。但是,当你再次点击时,Vue.js 仍然在原来的实例上进行计算,这可能会导致你再次点击才能获取到真实宽度。

      2. this.$el 是动态创建的节点的一个实例时,你可能需要使用 v-onv-on:click 来监听事件,以便在节点被点击时触发计算。这可能需要更复杂的代码,因为它涉及到处理多种事件类型。

      如果你希望在节点被点击时立即获取到宽度,你可以使用以下方法:

      javascript this.$el.addEventListener('click', (event) => { const width = this.$el.offsetWidth; console.log('Width:', width); });

      这将立即触发一个事件监听器,每当节点被点击时,它将计算并打印节点的宽度。

    更多回答
    扫一扫访问手机版