Vue3獲取和操作DOM元素的項目實踐
環(huán)境:vue3+ts+vite
目標(biāo):
1.修改DOM的文本值和樣式
2.獲取后代子DOM元素,操作修改
<template> <div class="content"> <h1>演示</h1> <p ref="pText1">這是ref為pText1的一段文本</p> </div> </template> <script lang="ts" setup> import {ref} from 'vue' const pText1=ref() console.log(pText1.value) </script>
發(fā)現(xiàn)此時定義的 pText1
打印的值是undefined,這個情況發(fā)生原因是未真正獲取到DOM元素,并不是我們定義的 const pText1=ref()
里面是空的問題。于是在生命鉤子里面執(zhí)行看看是什么?
<template> <div class="content" style="padding: 0 30px;"> <h1>演示</h1> <p ref="pText1">這是ref為pText1的一段文本</p> </div> </template> <script lang="ts" setup> import {onMounted, ref} from 'vue' const pText1=ref() console.log(pText1.value) onMounted(()=>{ console.log(pText1.value) }) </script>
看到了吧。那接下來就知道怎么操作了,加一下顏色
onMounted(()=>{ console.log(pText1.value) pText1.value.style.color='red' })
再改個文本值看看
onMounted(()=>{ console.log(pText1.value) pText1.value.style.color='red' pText1.value.innerText='我是修改后的文本值' })
當(dāng)然,我們不一定要頁面加載就執(zhí)行,我們可以定義一個方法來執(zhí)行DOM修改操作:
<template> <div class="content" style="padding: 0 30px;"> <h1>演示</h1> <p ref="pText1">這是ref為pText1的一段文本</p> <el-button @click="changeText" type="primary">點我修改</el-button> </div> </template> <script lang="ts" setup> import {onMounted, ref} from 'vue' const pText1=ref() const changeText=()=>{ console.log(pText1.value) pText1.value.style.color='red' pText1.value.innerText='我是點擊后修改的文本值' } /*onMounted(()=>{ console.log(pText1.value) pText1.value.style.color='red' pText1.value.innerText='我是修改后的文本值' })*/ </script>
點擊按鈕前:
點擊按鈕后:
獲取后代子DOM元素,操作修改
<template> <div class="content" style="padding: 0 30px;"> <h1>演示</h1> <p ref="pText1">這是ref為pText1的一段文本 <span>aaaaaaa</span></p> </div> </template> <script lang="ts" setup> import {onMounted, ref} from 'vue' const pText1=ref() onMounted(()=>{ //console.log(pText1) console.log(pText1.value.children[0].innerHTML) pText1.value.children[0].style.color='red'; pText1.value.children[0].innerText='我是修改后的span的文本'; }) </script>
總之,想要獲取DOM元素屬性,可以先打印出來,按需取值即可:
<template> <div class="content" style="padding: 0 30px;"> <h1>演示</h1> <p ref="pText1">這是ref為pText1的一段文本 <span>aaaaaaa</span></p> </div> </template> <script lang="ts" setup> import {onMounted, ref} from 'vue' const pText1=ref() onMounted(()=>{ console.log(pText1) }) </script>
到此這篇關(guān)于Vue3獲取和操作DOM元素的項目實踐的文章就介紹到這了,更多相關(guān)Vue3獲取和操作DOM內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解在vue-cli中引用jQuery、bootstrap以及使用sass、less編寫css
這篇文章主要介紹了詳解在vue-cli中引用jQuery、bootstrap以及使用sass、less編寫css,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11???????基于el-table和el-pagination實現(xiàn)數(shù)據(jù)的分頁效果
本文主要介紹了???????基于el-table和el-pagination實現(xiàn)數(shù)據(jù)的分頁效果,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08VUE3中Element table表頭動態(tài)展示合計信息
本文主要介紹了在Vue中實現(xiàn)動態(tài)合計兩個字段并輸出摘要信息的方法,通過使用監(jiān)聽器和深度監(jiān)聽,確保當(dāng)數(shù)據(jù)變化時能正確更新合計結(jié)果,具有一定的參考價值,感興趣的可以了解一下2024-11-11vue3使用拖拽組件draggable.next的保姆級教程
做項目的時候遇到了一個需求,拖拽按鈕到指定位置,添加一個輸入框,這篇文章主要給大家介紹了關(guān)于vue3使用拖拽組件draggable.next的保姆級教程,需要的朋友可以參考下2023-06-06vue2結(jié)合element-ui的gantt圖實現(xiàn)可拖拽甘特圖
因為工作中要用到甘特圖,所以我在網(wǎng)上搜索可以用的甘特圖,搜索了好多,但是網(wǎng)上搜到大多數(shù)都很雞肋,不能直接使用,下面這篇文章主要給大家介紹了關(guān)于vue2結(jié)合element-ui的gantt圖實現(xiàn)可拖拽甘特圖的相關(guān)資料,需要的朋友可以參考下2022-11-11