首先,獲取DOM元素是指在頁面中動態獲取或操作DOM元素,vue中如何獲取DOM元素呢?vue提供了兩種方式獲取DOM元素,一種是通過ref屬性來獲取DOM元素,另一種是通過$refs來獲取DOM元素。
下面我們介紹一下第一種方式:通過ref屬性來獲取DOM元素,ref是vue在模板中提供的一個特殊屬性,用來為某個元素注冊一個唯一標識符。我們可以使用$refs屬性訪問這個元素,進而操作DOM。
<template>
<div>
<input type="text" ref="input">
<button @click="handleClick">click me</button>
</div>
</template>
<script>
<!-- 在vue實例中編寫以下代碼 -->
methods: {
handleClick() {
console.log(this.$refs.input.value);
}
}
</script>
上述代碼中,我們給input元素設置了ref屬性為"input",然后在vue實例中通過this.$refs.input獲取到了該元素,并使用value屬性獲取到了輸入框中的值。
接下來介紹第二種方式:通過$refs來獲取DOM元素,$refs是vue實例內部自己維護的一個對象,包括了所有擁有ref屬性的元素。我們可以通過$refs來獲取某個元素,并進行DOM操作。
<template>
<div>
<input type="text" ref="input">
<button @click="handleClick">click me</button>
</div>
</template>
<script>
<!-- 在vue實例中編寫以下代碼 -->
methods: {
handleClick() {
console.log(this.$refs["input"].value);
}
}
</script>
上述代碼中,我們同樣給input元素設置了ref屬性為"input",然后在vue實例中通過this.$refs["input"]獲取到了該元素,并使用value屬性獲取到了輸入框中的值。
需要注意的是,在某些特定的場景下,我們需要在DOM渲染完成后再進行DOM操作,此時可以使用vue提供的mounted生命周期鉤子函數。
<template>
<div>
<h1 ref="title">{{ message }}</h1>
</div>
</template>
<script>
export default {
data() {
return {
message: "Hello Vue!"
}
},
mounted() {
console.log(this.$refs.title.innerText);
this.$refs.title.style.color = "red";
}
};
</script>
上述代碼中,我們給h1元素設置了ref屬性為"title",然后在mounted生命周期鉤子函數中使用this.$refs.title獲取到了該元素,并分別使用innerText屬性獲取到了元素中的文本內容,以及style屬性修改了元素的字體顏色。
綜上,vue提供的兩種獲取DOM元素的方式分別是通過ref屬性和$refs對象來實現,可以根據實際場景選擇合適的方式。同時,在進行DOM操作時,需要注意在DOM渲染完成后再進行操作。