关于vue异步更新dom节点与innerText不一致问题
代码:
<template>
<div>
<div id="msg" ref="msg">{{ msg }}</div>
<button @click="onChange">更新msg</button>
</div>
</template>
<script>
export default {
data() {
return {
msg: "hello",
};
},
created() {},
methods: {
onChange() {
this.msg = "hello world";
console.log(this.$refs.msg);
console.log(this.$refs.msg.innerText);
this.$nextTick(() => {
// 节点已更新, 文本变成新的值
console.log(this.$refs.msg); // <div>hello world</div>
console.log(this.$refs.msg.innerText); // hello
});
},
},
};
</script>
运行结果如同
说是异步更新,为什么打印出来的dom节点是已经更新的结果而访问innerText确是原来的结果呢? 求教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
打印的时候
innerText
还没有修改,而打印DOM
元素显示的直接是该元素的引用,里面的内容在你点击展开的时候更新了,跟console.log
输出对象、数组时的现象如出一辙。可以试试把
console.log(this.$refs.msg)
改成:outerHTML
里应该也是hello
。