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获取元素内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Vue3中Props和Emit的工作原理详解

    Vue3中Props和Emit的工作原理详解

    在现代前端开发中,Vue.js 来作为一个流行的 JavaScript 框架,提供了简单易用的 API 和强大的功能,在 Vue 3 中,“Props”和“Emit”是两个核心概念,本文将详细探讨这两个概念的工作原理,并提供示例代码以帮助更好地理解它们的使用,需要的朋友可以参考下
    2024-11-11
  • 如何利用vue展示.docx文件、excel文件和csv文件内容

    如何利用vue展示.docx文件、excel文件和csv文件内容

    最近遇到了一些新的需求,需要前端实现文件预览功能,下面这篇文章主要给大家介绍了关于如何利用vue展示.docx文件、excel文件和csv文件内容的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • 使用VUE+iView+.Net Core上传图片的方法示例

    使用VUE+iView+.Net Core上传图片的方法示例

    这篇文章主要介绍了使用VUE+iView+.Net Core上传图片的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Vue3 重构函数透传示例解析

    Vue3 重构函数透传示例解析

    这篇文章主要为大家介绍了Vue3 重构函数透传示例解析
    2023-02-02
  • 分享Vue组件传值的几种常用方式(二)

    分享Vue组件传值的几种常用方式(二)

    这篇文章主要介绍了分享Vue组件传值的几种常用方式,文章围绕主题斩开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • vue3 Table分页保留选中状态代码示例

    vue3 Table分页保留选中状态代码示例

    这篇文章主要给大家介绍了关于vue3 Table分页保留选中状态的相关资料,vue table组件是一个非常方便的表格组件,它可以帮助我们实现分页和选中功能,需要的朋友可以参考下
    2023-08-08
  • 如何在JS文件中获取Vue组件

    如何在JS文件中获取Vue组件

    这篇文章主要介绍了如何在JS文件中获取Vue组件,帮助大家更好的理解和学习前端知识,感兴趣的朋友可以了解下
    2020-09-09
  • Vue自定义指令中无法获取this的问题及解决

    Vue自定义指令中无法获取this的问题及解决

    这篇文章主要介绍了Vue自定义指令中无法获取this的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue如何配置根目录@(引用路径)

    Vue如何配置根目录@(引用路径)

    这篇文章主要介绍了Vue如何配置根目录@(引用路径),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue 应用中结合vux使用微信 jssdk的方法

    Vue 应用中结合vux使用微信 jssdk的方法

    今天小编就为大家分享一篇Vue 应用中结合vux使用微信 jssdk的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08

最新评论