javaScript与vue获取元素的方法代码示例

 更新时间:2023年10月08日 11:56:35   作者:小宛碎碎冰  
在开发中我们可能会遇到这样的问题,文本框聚焦、元素点击等,所以下面这篇文章主要给大家介绍了关于javaScript与vue获取元素的相关资料,需要的朋友可以参考下

javaScript

1 根据ID获取

get 获得 element 元素 by 通过

返回的是一个元素对象

document.getElementById('ID');

2 根据标签名获取

get 获得 element 元素 by 通过 Tag标签 Name名字

返回带有指定标签名的对象的集合 以伪数组的形式存储

document.getElementsByTagName('标签名');

3 通过HTML5新增的方法获取

document.getElementsByClassName('类名') 需要加下标 因为class可以有多个元素

querySelector('?') 参数是css选择器,只能返回一个元素(最上面的元素)

querySelectorAll('?') 参数是css选择器,会返回全部该选择器集合 通过下标获取单个元素

vue获取元素及兄弟元素,父级元素

先添加ref

<div class="" ref="divBox">

获取对象

let a = this.$refs.divBox

获取父、子、兄弟节点方法

var b = a.childNodes; 获取a的全部子节点
var c = a.parentNode; 获取a的父节点
var d = a.nextSbiling; 获取a的下一个兄弟节点
var d = a.nextElementSibling; 获取a的下一个兄弟节点
var e = a.previousSbiling;获取a的上一个兄弟节点
var e = a.previousElementSibling;获取a的上一个兄弟节点
var f = a.firstChild; 获取a的第一个子节点
var g = a.lastChild; 获取a的最后一个子节点

附:vue遍历过程中获取元素

在开发时遇到需要遍历设备集合,并且一个集合对应一个视频元素(video)的问题

这里主要展示vue遍历过程中如何取出元素的方法以及一些坑

首先是循环

    <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">实时温度信息</el-row>
            <el-row style="height: 48px;">
              <el-col><span>当前相机精确位置:{{ item.groupName }}</span></el-col>
            </el-row>
            <el-row style="height: 48px;">
              <el-col><span>当前外表最低温度:{{ item.tempMin }}℃</span></el-col>
            </el-row>
            <el-row style="height: 48px;">
              <el-col><span>当前外表最高温度:{{ item.tempMax }}℃</span></el-col>
            </el-row>
            <el-row style="height: 48px;">
              <el-col><span>当前外表平均温度:{{ 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元素,并且由于是数组所以每一个video元素需要绑定给不同ref,总的来说如果你需要在组件的 JS 代码中操作 <video> 元素,可以使用 ref 属性,如果需要给 <video> 元素设置样式或者 JS 代码中无需操作该元素,可以使用 id 属性。

 然后是method

    async mwfs() {
        // Wfs 对象已经存在,可以进行后续操作
        if (Wfs.isSupported()) {
          // 循环遍历设备列表
          //发送请求获取当前设备列表
          this.equipmentList = await this.getEquipmentTemp()
          for (let i = 0; i < this.equipmentList.length; i++) {
            const item = this.equipmentList[i];
            // // 发送同步请求获取当前温度信息
            // const res = await EquipTemp(item);
            // this.equipmentTempList.push(res.data)
            // 使用异步操作加载视频源
            await new Promise(async resolve => { // 将 Promise 函数添加 async 关键字标识
              //保证获取最新的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循环,为什么不采用foreach循环有以下原因

       ->首先就是先获取了设备列表然后采用了异步操作加载视频源可以避免阻塞主线程,提高页面响应速度,并且在加载多个视频时,异步操作可以同时进行,进一步提高效率。

       ->其次就是在foreach循环中无法等待异步操作完成再执行下一步循环的问题,因此容易出现数据错乱或者遗漏等问题。

       然后这里的this.$nextTick是为了保证我们的video元素已经是最新的才进行视频加载,获取元素的方法是通过this.$refs[`videoRef_${i}`][0]获取的,因为ref是可以绑定多个元素的,而我们是一个设备对应一个视频的,所以只需要取ref数组的第一个元素即可。

tips:只需要将元素打印出来,如果不是undefined是对应的元素即为获取到元素

总结

到此这篇关于javaScript与vue获取元素的文章就介绍到这了,更多相关js与vue获取元素内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • vue-cli4如何打包静态资源到指定目录

    vue-cli4如何打包静态资源到指定目录

    这篇文章主要介绍了vue-cli4打包静态资源到指定目录方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue-cli 为项目设置别名的方法

    vue-cli 为项目设置别名的方法

    这篇文章主要介绍了vue-cli 为项目设置别名的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 如何在 Vue 表单中处理图片

    如何在 Vue 表单中处理图片

    这篇文章主要介绍了如何在 Vue 表单中处理图片,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2021-01-01
  • 解决vscode Better Comments插件在vue文件中不显示相对应的颜色的问题

    解决vscode Better Comments插件在vue文件中不显示相对应的颜色的问题

    最近使用了Better Comments这款插件,发现在ts文件中可以显示对应的颜色,但在vue文件中并不显示对应颜色 ,下面小编给大家分享解决方法,感兴趣的朋友跟随小编一起看看吧
    2022-09-09
  • Vue替代vuex的存储库Pinia详细介绍

    Vue替代vuex的存储库Pinia详细介绍

    这篇文章主要介绍了Vue替代vuex的存储库Pinia,听说pinia与vue3更配,便开启了vue3的学习之路,pinia 和 vuex 具有相同的功效, 是 Vue 的存储库,它允许您跨组件/页面共享状态
    2022-09-09
  • Vue内容分发slot(全面解析)

    Vue内容分发slot(全面解析)

    下面小编就为大家带来一篇Vue内容分发slot(全面解析)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • vue-axios的使用以及axios请求赋值为空的问题

    vue-axios的使用以及axios请求赋值为空的问题

    这篇文章主要介绍了vue-axios的使用以及axios请求赋值为空的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • vue打包部署到springboot的实现示例

    vue打包部署到springboot的实现示例

    项目开发中,一般我们都会使用SpringBoot+Vue进行前后端开发,本文主要介绍了vue打包部署到springboot的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • vue项目实现点击目标区域之外可关闭(隐藏)目标区域

    vue项目实现点击目标区域之外可关闭(隐藏)目标区域

    这篇文章主要介绍了vue项目实现点击目标区域之外可关闭(隐藏)目标区域,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • webpack+vue.js构建前端工程化的详细教程

    webpack+vue.js构建前端工程化的详细教程

    这篇文章主要介绍了webpack+vue.js构建前端工程化的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论