javaScript與vue獲取元素的方法代碼示例
javaScript
1 根據(jù)ID獲取
get 獲得 element 元素 by 通過
返回的是一個(gè)元素對(duì)象
document.getElementById('ID');
2 根據(jù)標(biāo)簽名獲取
get 獲得 element 元素 by 通過 Tag標(biāo)簽 Name名字
返回帶有指定標(biāo)簽名的對(duì)象的集合 以偽數(shù)組的形式存儲(chǔ)
document.getElementsByTagName('標(biāo)簽名');
3 通過HTML5新增的方法獲取
document.getElementsByClassName('類名') 需要加下標(biāo) 因?yàn)閏lass可以有多個(gè)元素
querySelector('?') 參數(shù)是css選擇器,只能返回一個(gè)元素(最上面的元素)
querySelectorAll('?') 參數(shù)是css選擇器,會(huì)返回全部該選擇器集合 通過下標(biāo)獲取單個(gè)元素
vue獲取元素及兄弟元素,父級(jí)元素
先添加ref
<div class="" ref="divBox">
獲取對(duì)象
let a = this.$refs.divBox
獲取父、子、兄弟節(jié)點(diǎn)方法
var b = a.childNodes; 獲取a的全部子節(jié)點(diǎn) var c = a.parentNode; 獲取a的父節(jié)點(diǎn) var d = a.nextSbiling; 獲取a的下一個(gè)兄弟節(jié)點(diǎn) var d = a.nextElementSibling; 獲取a的下一個(gè)兄弟節(jié)點(diǎn) var e = a.previousSbiling;獲取a的上一個(gè)兄弟節(jié)點(diǎn) var e = a.previousElementSibling;獲取a的上一個(gè)兄弟節(jié)點(diǎn) var f = a.firstChild; 獲取a的第一個(gè)子節(jié)點(diǎn) var g = a.lastChild; 獲取a的最后一個(gè)子節(jié)點(diǎn)
附:vue遍歷過程中獲取元素
在開發(fā)時(shí)遇到需要遍歷設(shè)備集合,并且一個(gè)集合對(duì)應(yīng)一個(gè)視頻元素(video)的問題
這里主要展示vue遍歷過程中如何取出元素的方法以及一些坑
首先是循環(huán)
<el-row style="margin-bottom: 10px;">
<template v-for="(item, index) in equipmentTempList">
<el-col :xs="24" :sm="24" :md="12" :lg="4">
<el-card class="update-log">
<el-row style="text-align: center; margin-bottom: 40px">實(shí)時(shí)溫度信息</el-row>
<el-row style="height: 48px;">
<el-col><span>當(dāng)前相機(jī)精確位置:{{ item.groupName }}</span></el-col>
</el-row>
<el-row style="height: 48px;">
<el-col><span>當(dāng)前外表最低溫度:{{ item.tempMin }}℃</span></el-col>
</el-row>
<el-row style="height: 48px;">
<el-col><span>當(dāng)前外表最高溫度:{{ item.tempMax }}℃</span></el-col>
</el-row>
<el-row style="height: 48px;">
<el-col><span>當(dāng)前外表平均溫度:{{ item.tempAvg }}℃</span></el-col>
</el-row>
</el-card>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="8">
<div style="height: 296px; width: 489px">
<video :ref="'videoRef_' + index" :id="'video_' + index" height="285" width="400" muted="muted"
autoplay="autoplay"></video>
</div>
</el-col>
</template>
</el-row>綁定ref元素是為了獲取video元素,并且由于是數(shù)組所以每一個(gè)video元素需要綁定給不同ref,總的來說如果你需要在組件的 JS 代碼中操作
<video>元素,可以使用ref屬性,如果需要給<video>元素設(shè)置樣式或者 JS 代碼中無需操作該元素,可以使用id屬性。
然后是method
async mwfs() {
// Wfs 對(duì)象已經(jīng)存在,可以進(jìn)行后續(xù)操作
if (Wfs.isSupported()) {
// 循環(huán)遍歷設(shè)備列表
//發(fā)送請(qǐng)求獲取當(dāng)前設(shè)備列表
this.equipmentList = await this.getEquipmentTemp()
for (let i = 0; i < this.equipmentList.length; i++) {
const item = this.equipmentList[i];
// // 發(fā)送同步請(qǐng)求獲取當(dāng)前溫度信息
// const res = await EquipTemp(item);
// this.equipmentTempList.push(res.data)
// 使用異步操作加載視頻源
await new Promise(async resolve => { // 將 Promise 函數(shù)添加 async 關(guān)鍵字標(biāo)識(shí)
//保證獲取最新的DOM元素
this.$nextTick(() => {
const videoRef = this.$refs[`videoRef_${i}`][0];
console.log(videoRef)
const wfs = new Wfs();
wfs.attachMedia(videoRef, item.id);
this.videos.push(wfs)
wfs.on(Wfs.Events.MEDIA_ATTACHED, () => {
videoRef.play();
resolve();
});
});
});
}
}
},在這段代碼中,首先是for循環(huán),為什么不采用foreach循環(huán)有以下原因
->首先就是先獲取了設(shè)備列表然后采用了異步操作加載視頻源可以避免阻塞主線程,提高頁面響應(yīng)速度,并且在加載多個(gè)視頻時(shí),異步操作可以同時(shí)進(jìn)行,進(jìn)一步提高效率。
->其次就是在foreach循環(huán)中無法等待異步操作完成再執(zhí)行下一步循環(huán)的問題,因此容易出現(xiàn)數(shù)據(jù)錯(cuò)亂或者遺漏等問題。
然后這里的this.$nextTick是為了保證我們的video元素已經(jīng)是最新的才進(jìn)行視頻加載,獲取元素的方法是通過this.$refs[`videoRef_${i}`][0]獲取的,因?yàn)閞ef是可以綁定多個(gè)元素的,而我們是一個(gè)設(shè)備對(duì)應(yīng)一個(gè)視頻的,所以只需要取ref數(shù)組的第一個(gè)元素即可。
tips:只需要將元素打印出來,如果不是undefined是對(duì)應(yīng)的元素即為獲取到元素
總結(jié)
到此這篇關(guān)于javaScript與vue獲取元素的文章就介紹到這了,更多相關(guān)js與vue獲取元素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue-cli 為項(xiàng)目設(shè)置別名的方法
這篇文章主要介紹了vue-cli 為項(xiàng)目設(shè)置別名的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
解決vscode?Better?Comments插件在vue文件中不顯示相對(duì)應(yīng)的顏色的問題
最近使用了Better?Comments這款插件,發(fā)現(xiàn)在ts文件中可以顯示對(duì)應(yīng)的顏色,但在vue文件中并不顯示對(duì)應(yīng)顏色?,下面小編給大家分享解決方法,感興趣的朋友跟隨小編一起看看吧2022-09-09
Vue替代vuex的存儲(chǔ)庫(kù)Pinia詳細(xì)介紹
這篇文章主要介紹了Vue替代vuex的存儲(chǔ)庫(kù)Pinia,聽說pinia與vue3更配,便開啟了vue3的學(xué)習(xí)之路,pinia 和 vuex 具有相同的功效, 是 Vue 的存儲(chǔ)庫(kù),它允許您跨組件/頁面共享狀態(tài)2022-09-09
vue-axios的使用以及axios請(qǐng)求賦值為空的問題
這篇文章主要介紹了vue-axios的使用以及axios請(qǐng)求賦值為空的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
vue打包部署到springboot的實(shí)現(xiàn)示例
項(xiàng)目開發(fā)中,一般我們都會(huì)使用SpringBoot+Vue進(jìn)行前后端開發(fā),本文主要介紹了vue打包部署到springboot的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07
vue項(xiàng)目實(shí)現(xiàn)點(diǎn)擊目標(biāo)區(qū)域之外可關(guān)閉(隱藏)目標(biāo)區(qū)域
這篇文章主要介紹了vue項(xiàng)目實(shí)現(xiàn)點(diǎn)擊目標(biāo)區(qū)域之外可關(guān)閉(隱藏)目標(biāo)區(qū)域,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
webpack+vue.js構(gòu)建前端工程化的詳細(xì)教程
這篇文章主要介紹了webpack+vue.js構(gòu)建前端工程化的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05

