v-for 渲染循环渲染页面的出现让我们告别了繁琐的JS拼接,在开发上面节省了很多时间。

近期在开发中发现了在某些特定情况下,出现了获取不到渲染出来的DOM元素的情况,原因身为小白的我暂时还没搞清楚(忘大佬指出),但是却得出来初步的解决方案。

HTML 代遇新是直朋能到码

{{item.age}}

JS 代码(错误代码比抖朋要插支一圈不者地)

// 错误代码示例一

var vm = new Vue({

el: '#app',

data: {

abc: new Object()

},

mounted: function () {

this.getList();

var li = document.querySelectorAll('li');

console.log(li.length); // 输出0

},

methods: {

getList: function () {

var data = [

{ name: '1', age: '21' },

{ name: '2', age: '22' },

{ name: '3', age: '23' },

{ name: '4', age: '24' },

{ name: '5', age: '25' }

];

this.$set(this, 'abc', data);

}

}

})

// 错误代码示例二

var vm;

window.onload = function(){

vm = { ... } // 实例化代码如上,去除 mounted 生命周期

vm.getList();

var li = document.querySelectorAll('li');

console.log(li.length); // 输出0

}

上述代码中的 li 即是通过 v-for 渲染生成,但是两种方式获取 li 输出的长度都为0。

最终发现将数据初始化放到 beforeMount 里面即可在 mounted 里面正确输出获取到 li 元素的长度。

JS 代码(解决方案比抖朋要插支一圈不者地)

// 解决方案一(数据初始化放在挂载之前)

var vm = new Vue({

el: '#app',

data: {

abc: new Object()

},

beforeMount: function(){

this.getList();

},

mounted: function () {

var li = document.querySelectorAll('li');

console.log(li.length) // 输出5

},

methods: {

getList: function () {

var data = [

{ name: '1', age: '21' },

{ name: '2', age: '22' },

{ name: '3', age: '23' },

{ name: '4', age: '24' },

{ name: '5', age: '25' }

];

this.$set(this, 'abc', data);

}

}

})

// 解决方案二(mounted周期里面使用VUE自带钩子函数$nextTick做处理)

mounted: function () {

this.getList();

this.$nextTick(function () {

var li = document.querySelectorAll('li');

console.log(li.length) // 输出 5

})

}

获取不到html页面上的元素,Vue v-for渲染页面,获取不到DOM元素解析相关推荐

  1. 一个vue请求接口渲染页面的例子

    new Vue({el:'#bodylist',data: {list: [{"type_id": "1","type_name": &qu ...

  2. python渲染html页面_python接口自动化29-requests-html支持JavaScript渲染页面

    前言 requests虽好,但有个遗憾,它无法加载JavaScript,当访问一个url地址的时候,不能像selenium一样渲染整个html页面出来. requests-html终于可以支持Java ...

  3. 实现元素拖拽放大缩小_Vue实战067:DOM元素拖拽效果的实现

    DOM元素拖拽效果: 当鼠标选中目标元素之后可以将其拖放至指定区域的任意位置,实现的思路主要是通过鼠标事件按下.移动.抬起,摁下鼠标时记录鼠标位置以及元素位置并算出鼠标相对元素的位置,在拖拽时记下当前 ...

  4. js如何监听元素事件是否被移除_javascript – 如果一个DOM元素被删除,它的监听器也从内存中删除?...

    现代浏览器 纯JavaScript 如果被删除的DOM元素是无引用的(没有指向它的引用),那么yes – 该元素本身被垃圾收集器以及与其相关联的任何事件处理器/监听器拾取. var a = docum ...

  5. 后台数据展示到页面上的过程(vue)

    1. 后台将数据接口上传至服务器 可以使用swagger-ui文档进行前后端分离开发 2. 封装后台接口 这里专门创建了一个api的文件夹写api接口方法,不是完全必要,但这么做后期维护起来比较方便. ...

  6. html5 元素重叠,javascript – 检查两个或多个DOM元素是否重叠

    在查看代码之后,当您从开始和结束时间开始处理时,检查渲染的元素是否过于复杂似乎过于复杂. 我这样做的方法是将碰撞在数组中的事件分组,如下所示: let collisions = [ // only 1 ...

  7. vue websocket 实时渲染页面

    let app = new Vue({-}) app.args = respone.socket;

  8. 获取DOM元素方法小结

    在开发中不可避免的需要操作DOM,现在就来总结一下原生的获取DOM的API. getElementById() 该方法是最常用的通过元素的id属性来获取DOM元素的API,返回一个DOM元素. < ...

  9. html页面执行sql语句,关于在页面上执行sql语句

    在页面上执行sql语句,首先在页面上顶一个文本域,让用户输入需要执行的sql语句. html代码如下: New Document 执行 输入的sql: 然后最重要的是如何获取选中的文本并且让其在后台执 ...

  10. 使用html元素的getBoundingClientRect来获取dom元素的时时位置和大小

    使用: var section = $('.section'):这是jquery包装的dom元素,其他前端框架返回的可能也是一个包装元素, 我们需要获得的是里面的html的dom元素 然后:secti ...

最新文章

  1. java编写类骑士游历_java课程设计骑士游历程序的开发
  2. 操作系统习题7—文件系统
  3. vaniglia 源码学习 (六)
  4. C++ 循环链表练习题 报数删除【非常没有条理】
  5. dp 树状数组 逆序元组
  6. Netty(二)(入门篇)传统的Bio编程
  7. fir1截止频率计算_数字信号处理 实验五:FIR数字滤波器设计与软件实现
  8. web前端性能优化方案
  9. 第一章-第一题(小学生四则运算)--By郭青云
  10. 买木头 (二分)题解
  11. 天才小毒妃 第907章 底气,狮子大开口
  12. word之表格如何自动换页?
  13. 英语四级考试计算机游戏,四级你过了吗电脑版
  14. 【松岩早盘视点】2019-09-30
  15. 关于win10安装silverlight成功 之后还是提示要安装的解决方案__2021年9月
  16. EBS Form开发中LOV实现实例(3)
  17. 数字货币将提升跨境交易和支付清算速度
  18. linux如何确定共享库路径,摘录Linux下动态共享库加载时的搜索路径详解
  19. c# 处理Excel数据
  20. 2022年最新河南机动车签字授权人模拟试题及答案

热门文章

  1. 面试官:HashMap有几种遍历方法?推荐使用哪种?
  2. mysql 需要什么硬件配置_如何来给指定的硬件环境配置一份比较合理的MySQL配置文件-爱可生...
  3. docker 创建容器报: Error response from daemon: C: drive is not shared.
  4. Linux下查看CPU个数(逻辑个数和物理个数)
  5. mysql数据存储和函数_MySQL数据库——存储和函数
  6. php fuzzy,模糊C均值聚类算法(Fuzzy C-means)
  7. usb连接不上 艾德克斯电源_艾德克斯HT3150联机和IT6720校准联机记
  8. hssfworkbook.write 生成文件 数据丢失_电脑文件丢失了,数据恢复我只用这一个软件!...
  9. Win11系统语言修改不了中文怎么办
  10. java访问同一个变量_java – 从另一个类访问变量