广告
返回顶部
首页 > 资讯 > 精选 >Vue中如何获取DOM元素
  • 454
分享到

Vue中如何获取DOM元素

2023-07-04 20:07:50 454人浏览 八月长安
摘要

今天小编给大家分享一下Vue中如何获取DOM元素的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。dom是一种文档对象模型,同时

今天小编给大家分享一下Vue中如何获取DOM元素的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

dom是一种文档对象模型,同时也是用于html编程的接口,通过dom来操作页面中的元素。DOM是HTML文档的内存中对象表示,它提供了使用javascript与网页交互的方式。DOM是节点的层次结构(或树),其中document节点作为根。

什么是dom

dom是一种文档对象模型,同时也是用于html编程的接口,通过dom来操作页面中的元素。当html页面被实现加载的时候,浏览器会创建一个dom,给文档提供了一种新的逻辑结构,并且可以改变内容和结构。

DOM称为文件对象模型(DocumentObjectModel,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口

DOM是HTML文档的内存中对象表示,它提供了使用JavaScript与网页交互的方式。DOM是节点的层次结构(或树),其中document节点作为根。

实际上DOM是以面向对象的方式来描述的文档模型。DOM定义了表示和修改文档所需的对象和这些对象的行为和属性以及这些对象之间的关系。

通过JavaScript,我们可以重构整个HTML文档。比如添加、移除、改变或重排页面上的项目

要改变页面上的某个东西,JavaScript就需要获得对HTML文档中所有元素进行访问的入口。这个入口,连同对HTML元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的。

什么是虚拟DOM

虚拟 DOM (Virtual DOM )这个概念相信大家都不陌生,从 React 到 Vue ,虚拟 DOM 为这两个框架都带来了跨平台的能力(React-Native 和 Weex)

实际上它只是一层对真实DOM的抽象,以JavaScript 对象 (Vnode 节点) 作为基础的树,用对象的属性来描述节点,最终可以通过一系列操作使这棵树映射到真实环境上

在Javascript对象中,虚拟DOM 表现为一个 Object对象。并且最少包含标签名 (tag)、属性 (attrs) 和子元素对象 (children) 三个属性,不同框架对这三个属性的名命可能会有差别

创建虚拟DOM就是为了更好将虚拟的节点渲染到页面视图中,所以虚拟DOM对象的节点与真实DOM的属性一一照应

在vue中同样使用到了虚拟DOM技术

定义真实DOM

<div id="app">    <p class="p">节点内容</p>    <h4>{{ foo }}</h4></div>

实例化vue

const app = new Vue({    el:"#app",    data:{        foo:"foo"    }})

观察render的render,我们能得到虚拟DOM

(function anonymous() {with(this){return _c('div',{attrs:{"id":"app"}},[_c('p',{staticClass:"p"},  [_v("节点内容")]),_v(" "),_c('h4',[_v(_s(foo))])])}})

通过VNode,vue可以对这颗抽象树进行创建节点,删除节点以及修改节点的操作, 经过diff算法得出一些需要修改的最小单位,再更新视图,减少了dom操作,提高了性能。

Vue获取DOM的几种方法

虽然Vue实现了MVVM模型,将数据和表现进行了分离,我们只需要更新数据就能使DOM同步更新,但是某些情况下,还是需要获取DOM元素进行操作(比如引入的某个库要求传入一个根dom元素作为根节点,或者写一些自定义指令),本文主要介绍几种在Vue中获取DOM元素的方法。

使用DOM API直接找元素

<script>...mounted () {let elm = this.$el.querySelector('#id')}</script>

这种方法足够简单直观,Vue组件在patch阶段结束时会把this.$el赋值为挂载的根dom元素,我们可以直接使用$elquerySelector, querySelectorAll等方法获取匹配的元素。

refs

<template><div ref="bar">{{ foo }}</div><MyAvatar ref="avatar" />...</template><script>...mounted () {let foo = this.$refs['bar'] // 一个dom元素let avatar = this.$refs['avatar'] // 一个组件实例对象}</script>

使用组件实例的$refs即可拿到组件上ref属性对应的元素。
如果ref属性加在一个组件上,那么拿到的是这个组件的实例,否则拿到的就是dom元素了。

值得注意的是包含v-for循环模板指令的情况,其循环元素和子元素上ref属性对应的都是一个数组(就算动态生成ref,也是数组):

<template><div v-for="item in qlist" :key="item.id" ref="qitem"><h4>{{ item.title  }}</h4><p ref="pinitem">{{ item.desc }}</p><p :ref="'contact'+item.id">{{ item.contact }}</p></div>...</template><script>...data () {return {qlist: [{ id: 10032, title: 'abc', desc: 'aadfdcc', contact: 123 },{ id: 11031, title: 'def', desc: '--*--', contact: 856 },{ id: 20332, title: 'ghi', desc: '?/>,<{]', contact: 900 }]}},mounted () {let foo = this.$refs['qitem'] // 一个包含dom元素的数组let ps = this.$refs['pinitem'] // p元素是v-for的子元素,同样是一个数组let contact1 = this.$refs['contact' + this.qlist[0].id] // 还是个数组}</script>

关于这个的原因,可以从Vue关于ref处理的部分代码得到:

function reGISterRef (vnode, isRemoval) {  var key = vnode.data.ref;  if (!isDef(key)) { return }  var vm = vnode.context;  // vnode如果有componentInstance表明是一个组件vnode,它的componentInstance属性是其真实的根元素vm  // vnode如果没有componentInstance则不是组件vnode,是实际元素vnode,直接取其根元素  var ref = vnode.componentInstance || vnode.elm;  var refs = vm.$refs;  if (isRemoval) {    ...  } else {  // refInFor是模板编译阶段生成的,它是一个布尔值,为true表明此vnode在v-for中    if (vnode.data.refInFor) {      if (!Array.isArray(refs[key])) {        refs[key] = [ref]; // 就算元素唯一,也会被处理成数组      } else if (refs[key].indexOf(ref) < 0) {        // $flow-disable-line        refs[key].push(ref);      }    } else {      refs[key] = ref;    }  }}

使用自定义指令

Vue提供了自定义指令,官方文档给出了如下的使用方法,其中el就是dom元素的引用

Vue.directive('focus', {  // 当被绑定的元素插入到 DOM 中时……  inserted: function (el) {    // 聚焦元素    el.focus()  }})// 在模板中<template><input v-model="name" v-focus /></template>

关于自定义指令,在一些组件库和事件上报等场景下非常有用。

以上就是“Vue中如何获取DOM元素”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: Vue中如何获取DOM元素

本文链接: https://www.lsjlt.com/news/347292.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue中如何获取DOM元素
    今天小编给大家分享一下Vue中如何获取DOM元素的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。dom是一种文档对象模型,同时...
    99+
    2023-07-04
  • vue如何获取dom元素
    这篇文章将为大家详细讲解有关vue如何获取dom元素,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue获取dom元素的方法:1、给相应的dom元素加id,使用“document.getElementBy...
    99+
    2023-06-25
  • DOM中如何获取元素
    这篇文章将为大家详细讲解有关DOM中如何获取元素,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概述DOM (Document objectModal) :文档对象模型。DOM:是浏览器提供的(浏览器特有)...
    99+
    2023-06-27
  • JavaScript如何获取DOM元素
    小编给大家分享一下JavaScript如何获取DOM元素,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法:1、用getElementById方法通过ID获取;2...
    99+
    2023-06-14
  • 如何在HTML中获取DOM元素
    如何在HTML中获取DOM元素?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.利用querySelectorAll()方法   返回文档中匹配指定...
    99+
    2023-06-14
  • vue中怎么获取dom元素中的内容
    vue中获取dom元素中内容的方法:vue中是通过给标签加ref属性,然后在js中利用ref去引用它,从而操作该dom元素。示例:<template>  <div>  &nbs...
    99+
    2022-10-07
  • 如何在Vue中获取DOM元素的实际宽高
    目录前言一、获取元素二、获取元素宽高补充:vue项目获取dom元素宽高总是不准确总结前言 最近使用 D3.js 开发可视化图表,因为移动端做了 rem 适配,所以需要动态计算获取图表...
    99+
    2022-11-13
  • Vue中获取DOM元素的方法有哪些
    本文小编为大家详细介绍“Vue中获取DOM元素的方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中获取DOM元素的方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、通过 $refs 获取...
    99+
    2023-07-05
  • javascript中怎么获取dom元素
    这篇文章给大家分享的是有关javascript中怎么获取dom元素的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 获取方法:1、“document.g...
    99+
    2022-10-19
  • 探讨Vue中获取DOM元素的几种方法
    Vue是一种流行的JavaScript框架,它使开发人员可以轻松地构建交互式Web应用程序。其中一个常见的需求是在Vue组件中获取DOM元素,以便对其进行操作。但是,Vue有一些特殊的方式来获取DOM元素。在本文中,我们将探讨Vue中获取D...
    99+
    2023-05-14
  • 怎么在JQuery中获取DOM元素
    在JQuery中使用get方法获取DOM元素:1.get(),获取包含jQuery对象中所有DOM元素的数组;2.get(index),获取jQuery对象中拥有指定索引的DOM元素;具体方法如下:使用get()方法获取JQuery中get...
    99+
    2022-10-21
  • 怎么在HTML中获取DOM元素
    怎么在HTML中获取DOM元素?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.getElementById() 方法返回对拥有指定 id 的第一个对象的引用<!DOCT...
    99+
    2023-06-14
  • vue 3.0 使用ref获取dom元素的示例
    前言 附上vue3.0文档:Vue3中文文档 - vuejs Vue 2.x获取DOM <div ref="myRef"></div> this.$refs....
    99+
    2022-11-13
  • Vue获取DOM元素并修改属性的方法
    Vue获取DOM元素 Vue获取DOM元素有两种方法 直接给相应的元素加id,然后再使用document.getElementById("id");获取使用ref...
    99+
    2022-11-13
  • vue如何获取元素的高
    在vue中获取元素高的方法:1.新建vue.js项目;2.添加div标签,设置ref属性;3.执行代码获取元素的高;具体步骤如下:首先,在vue-cli中创建一个vue.js项目;vue create project-namevue.js项...
    99+
    2022-10-03
  • vue如何获取指定元素
    目录如何获取指定元素点击获取相应元素如何获取指定元素 在想要获取元素上添加“ref”  ref="scroll"  s...
    99+
    2022-11-13
  • vue获取dom元素子节点的方法是什么
    在Vue中,可以使用`$refs`来获取DOM元素的子节点。具体步骤如下:1. 在模板中给DOM元素加上`ref`属性,例如:`.....
    99+
    2023-08-08
    vue
  • uniapp中获取dom元素及更改dom元素颜色的方法是什么
    这篇文章主要介绍了uniapp中获取dom元素及更改dom元素颜色的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇uniapp中获取dom元素及更改dom元素颜色的方法是什么文章都会有所收获,下面我们...
    99+
    2023-07-05
  • JavaScript中如何利用DOM节点获取页面元素
    本文小编为大家详细介绍“JavaScript中如何利用DOM节点获取页面元素”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript中如何利用DOM节点获取页面元素”文章能帮助大家解决疑惑,下面...
    99+
    2022-10-19
  • uniapp中获取dom元素的方法及更改dom元素颜色踩坑记录
    目录前言使用uni.createSelectorQuery()附:ni-app获取DOM元素信息及跳到指定位置总结前言 最近写uniapp,遇到一个需要获取到页面中dom元...
    99+
    2023-03-19
    uni-app获取dom元素 如何获取dom元素 uniapp获取dom元素内容
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作