获取当前事件源DOM
获取当前事件源DOM
今天用Vue3写程序时遇到了一个问题,原代码如下:
<template>
<div id="toggleCodeButton" @click="toggleCode">
显示代码
</div>
</template>
<script lang="ts">
import { onMounted } from 'vue'
export default {
setup() {
const toggleCodeButton = <HTMLDivElement>document.querySelector('#toggleCodeButton')
const toggleCode = onMounted(() => {
console.log(toggleCodeButton)
})
}
}
</script>
预期的结果时打印出toggleCodeButton这个DOM元素,但是结果返回的是null,
后来发现了问题所在:我虽然log是在挂载完成后,但是获取DOM却是在挂载之前,当然不会有结果,只要将获取DOM元素也放到onMounted()钩子中即可。
代码如下:
setup() {
const toggleCode = onMounted(() => {
const toggleCodeButton = <HTMLDivElement>document.querySelector('#toggleCodeButton')
console.log(toggleCodeButton)
})
}
本文想要记录的是在查找解决办法的过程中发现的另一种方法,可以获取触发当前事件的DOM,即在调用的方法中传入$event参数,再用e.target获取DOM
代码修改如下:
<template>
<div id="toggleCodeButton" @click="toggleCode($event)">
显示代码
</div>
</template>
<script lang="ts">
export default {
setup() {
const toggleCode = (e) => {
console.log(e.target)
}
}
}
</script>
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!