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中操作dom元素的几种方法(最新推荐)

    VUE中操作dom元素的几种方法(最新推荐)

    本文给大家总结了Vue中操作dom元素的多种方法,每种方法结合实例代码给大家讲解的非常详细,需要的朋友参考下吧
    2022-12-12
  • Vue和relation-graph库打造高质量的关系图应用程序

    Vue和relation-graph库打造高质量的关系图应用程序

    这篇文章主要介绍了Vue和relation-graph库打造高质量的关系图应用程序,在这篇文章中,我们深入探讨了如何使用Vue和relation-graph高效打造关系图,我们详细介绍了数据准备、关系映射、点击事件等关键步骤,需要的朋友可以参考下
    2023-09-09
  • 在Vue3中如何更优雅的使用echart图表详解

    在Vue3中如何更优雅的使用echart图表详解

    ECharts是一个强大的画图插件,在vue项目中,我们常常可以引用Echarts来完成完成一些图表的操作,下面这篇文章主要给大家介绍了关于在Vue3中如何更优雅的使用echart图表的相关资料,需要的朋友可以参考下
    2022-05-05
  • vite+vue3项目初始化搭建的实现步骤

    vite+vue3项目初始化搭建的实现步骤

    本文主要介绍了vite+vue3项目初始化搭建的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • vue使用Element的Tree树形控件实现拖动改变节点顺序方式

    vue使用Element的Tree树形控件实现拖动改变节点顺序方式

    这篇文章主要介绍了vue使用Element的Tree树形控件实现拖动改变节点顺序方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 在vue中实现PDF文件流预览功能

    在vue中实现PDF文件流预览功能

    这篇文章主要为大家详细介绍如何在vue中实现PDF文件流预览功能,文中的实现步骤讲解详细,对大家的学习或工作具有一定的参考价值,需要的可以参考一下
    2023-12-12
  • vue和iview实现Scroll 数据无限滚动功能

    vue和iview实现Scroll 数据无限滚动功能

    今天小编就为大家分享一篇vue和iview实现Scroll 数据无限滚动功能,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • vue的注意规范之v-if 与 v-for 一起使用教程

    vue的注意规范之v-if 与 v-for 一起使用教程

    这篇文章主要介绍了vue的注意规范之v-if 与 v-for 一起使用方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • vue3实现页面截图功能示例详解

    vue3实现页面截图功能示例详解

    在Vue3项目中实现页面截图的功能,可以通过使用js-web-screen-shot组件来实现,本文以toolbox.js作为案例,详细介绍了如何在Vue3框架下,利用js-web-screen-shot组件实现页面截图的具体步骤和方法,这一技术的应用,不仅可以提高用户体验,还能在需要时方便地获取页面的即时信息
    2024-10-10
  • vue如何从后台获取数据生成动态菜单列表

    vue如何从后台获取数据生成动态菜单列表

    这篇文章主要介绍了vue如何从后台获取数据生成动态菜单列表,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04

最新评论