自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 在 el-table 中嵌入 el-checkbox el-input el-upload 多组件,实现复杂业务场景

表格“属性”列由 多选框checkbox、输入框input、 图片上传upload 等组件组成,从代码可看出 checkbox-group 包裹 input等组件,所以当在输入框输入或点击上传图片等操作时,都会触发勾选/取消勾选多选框。在实现的过程中,我还碰到一个输入框不能输入的问题,我操作输入之后,没有动静,再点击勾选操作时就可以正确显示出来了。时,你会发现,操作点击时不会触发弹出选择文件窗口,这是因为加了阻止冒泡后没有触发到选择文件的操作,这就需要我们自己在事件处理中写逻辑去触发。

2023-11-17 14:36:14 2115

原创 解决:element ui表格表头自定义输入框单元格el-input不能输入问题

表格表头如图所示,有 40-45,45-50 数据,且以输入框形式呈现,现想修改其数据或点击右侧加号增加新数据编辑。结果不能输入,部分代码如下。Scoped slot 可以获取到 row, column, $index 和 store(table 内部的状态管理)的数据。结果不能输入,解决方法就是在表头自定义时将漏掉的。去获取数据,于是没有加上。

2023-11-14 11:40:56 1843

原创 (有效解决)Android Studio 运行项目时报 Package install error: Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]

报错解决方法Package install error: Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]

2022-07-13 14:36:23 1064

原创 【ES6】async函数知识点

async函数 -->Generator函数的语法糖(1) async函数将Generator函数的 * 替换成 async,将yield 替换成 await....//const gen = function* (){ const f1 = yield readFile('/ect/fstab'); const f2 = yield readFile('/ect/shells'); console.log(f1.toString()); console.log(f2.toString(

2021-09-16 11:24:31 383

原创 【ES6】变量的解构赋值(超详细)

数组的解构赋值以前:let a = 1;let b = 2;let c = 3;ES6:let[a,b,c] = [1,2,3];数组嵌套解构例子let [foo,[[bar],baz]] = [1,[[2],3]]let [,,third] = ["foo","bar","baz"]third//"baz"let [x,,y] = [1,2,3]x//1y//3let [head, ...tail] = [1,2,3,4]head//[1]tail//[2,3,4

2021-09-15 16:35:48 499

原创 【ES6】let const var 区别

(一)变量的有效区域var声明的变量是全局的let 和 const 声明的变量只在它所在的代码块有效,仅在块级作用域有效[注:同一作用域不可用let重复声明同一个变量]const 声明的变量不得改变值,一旦声明,常量的值就不能改变,且声明时即要赋值,否则会报错(二)变量提升var存在变量提升,即变量在声明之前可以使用,值为undefinedlet 和 const 命令不存在变量提升,它所声明的变量一定要声明后才可使用,不然会报错(三)暂时性死区ES6明确规定,如果区块中存在 let 和 c

2021-09-15 09:53:31 174

原创 【Vue】为什么要使用虚拟Dom?

在回答“为什么要使用虚拟Dom”这个问题之前,先来了解Js在解析真实Dom的时候都付出哪些代价?Js操作真实Dom的代价用我们传统的开发模式,原生JS或JQ操作DOM时,浏览器会从构建DOM树开始从头到尾执行一遍流程。在一次操作中,我需要更新10个DOM节点,浏览器收到第一个DOM请求后并不知道还有9次更新操作,因此会马上执行流程,最终执行10次。例如,第一次计算完,紧接着下一个DOM更新请求,这个节点的坐标值就变了,前一次计算为无用功。计算DOM节点坐标值等都是白白浪费的性能。即使计算机硬件一直在迭代

2021-08-11 15:54:43 953

原创 【Vue】当父子两个组件同时定义了 beforeCreate, created, beforeMount, mounted 四个钩子, 它们的执行顺序是怎样的?

面试时常常会被问到,当父子组件同时定义了四个钩子,那么它们的执行顺序是怎么样的呢?答:首先会执行父组件的初始化过程, 所以会依次执行beforeCreate, created, 在执行挂载前又会执行beforeMount钩子, 不过在生成真实dom 的 __patch__过程中遇到嵌套子组件后又会转为去执行子组件的初始化钩子beforeCreate, created, 子组件在挂载前会执行beforeMounte, 再完成子组件的Dom创建后执行 mounted。 这个父组件的 patch 过程才算完成,

2021-08-11 15:44:47 577

原创 【算法天天练】第一个错误版本问题(二分查找)

个人解题思路:通过二分查找不断缩小查找范围,分为以下几种情况:取中间值mid,判断mid所在的版本调用完接口后是否为错误版本1.是错误版本,判断它的前一个版本是否为错误版本,是则继续缩小查找范围,不是则mid为第一个错误版本,return出来2.不是错误版本,继续缩小查找范围,重复1直至找到第一个错误版本自己实现的代码var solution = function(isBadVersion) { /** * @param {integer} n Total versions

2021-08-10 15:45:30 115

原创 【算法天天练】删除链表倒数第N个结点 问题

涉及到的知识点:1.链表删除问题:前驱、后继2.给定一个链表,那链表的第一个元素该如何表示:通常给一个虚拟头结点,便于解决要删除实际头结点的情况解题思路:快慢指针法(在上一篇算法题也有提及到:【算法天天练】寻找链表中间结点问题)双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。//倘若head=[1,2,3,4,5] n=2var removeNthFromEnd = function(.

2021-08-09 10:03:14 100

原创 Js:new操作符的原理是什么?如何模拟实现?

在我之前所学习的领域中,我只知道new一个对象(实例化对象)。对于new操作符的原理以及如何模拟实现是一问三不知…今天结合资料记录学习其原理以及模拟实现。.一、new操作符的原理二、模拟实现new操作符一、new操作符的原理new的作用function Test(name) { this.name = name}Test.prototype.sayName = function () { console.log(this.name)}const t = new Test('dan

2021-08-06 16:21:46 510

原创 【算法天天练】寻找链表中间结点问题

个人解题思路:先求出整个链表的表长,再除以2,得到链表的中间位置。此时我就卡在了如何获取这个数组??(cai本cai下面会提到,其实通过指针的移动来将数据存入到新建的一个数组里就可以了借鉴他人解决方法:方法一:数组法由于链表无法用下标来获取数据,所以只能通过指针的移动来将数据存入到新建的一个数组A里;此时结束循环的条件是数组的最后一个数据的next指针指向的数据为空。接着算出数组A的长度,即中间节点为A.length /2,即获取到中间结点的值为 A[A.length/2]若遇到长度不能被2.

2021-08-06 09:35:35 236

原创 Js:字符串常见的操作方法concat()、slice()、substr()、substring()以及切片操作

拼接字符串: concat() 或 "+"concat()var stringValue = "hello ";var result = stringValue.concat("world");alert(result); //"hello world"alert(stringValue); //"hello"实际上, concat() 方法可以接受任意多个参数,也就是说可以通过它拼接任意多个字符串。再看一个例子:var stringValue = "hello ";var result

2021-08-05 12:03:59 615

原创 【算法天天练】反转字符串中的单词问题

个人解题思路:split()方法以空格为"分割符"分割字符串后,在分割出来后的数组再遍历其子数组,在子数组用第三方暂存值的方法反转字符串。存在问题:如何获取数组的子数组?例如let p = s.split(" ")//结果是 ["Let's","take","LeetCode","contest"]再将p的每个数据变成数组(即子数组),接着在子数组用第三方暂存值的方法反转字符串。其中,将p的每个数据变成数组(即子数组),这一步骤怎么实现?还不知道…(cai)或者有朋友可以告诉我,欢迎评论.

2021-08-05 10:24:53 123

原创 Js: 访问字符串中特定字符的方法 charAt() 和 charCodeAt()的区别

两个用于访问字符串中特定字符的方法是: charAt() 和 charCodeAt() 。这两个方法都接收一个参数,即基于 0 的字符位置。其中, charAt() 方法以单字符字符串的形式返回给定位置的那个字符(ECMAScript 中没有字符类型)。例如:var stringValue = "hello world";alert(stringValue.charAt(1)); //"e"字符串 “hello world” 位置 1 处的字符是 “e” ,因此调用 charAt(1) 就返回了

2021-08-04 20:20:42 596

原创 【算法天天练】两数相加等于目标值问题

解题思路:若题目所给的数组是升序数组,那么可以采用双指针的思想去解决,在往期博客有写到【算法天天练】两数相加等于目标值+有序数组问题但是此题目所给的数组(这里标为A)是无序的,所以解题思路会有所变化:将目标值target 减去 索引为0的首个数 nums[0] ,将所得值放进一个新数组B,再用 indexOf() 方法去查找数组B里有无数组A的值,如此循环反复,直至 i == nums.length,若无则返回 -1 .这篇文章可查看indexOf() 方法参数,返回值都是什么:Js:indexO.

2021-08-04 15:01:11 241

原创 (详细易懂)一篇文章让你读懂到底什么是Ajax

文章目录一、Ajax的功能二、Ajax的核心1.XMLHttpRequest对象同步请求(设置参数为false)响应返回异步请求(默认或设置参数为true)三、实现AJAX基本步骤的简单总结四、实现AJAX时携带参数请求GET方法POST方法五、AJAX封装总结一、Ajax的功能Ajax的功能是默认以异步的方式从服务器获取更多的信息。它使得用户无需刷新页面即可从服务器取得数据。PS:传统的网页(不使用 Ajax)如果需要更新内容,必需重载整个网页面。同步提交:当用户发送请求时,当前页面不可以使用

2021-08-04 11:42:18 4911

原创 Vue数据绑定原理

Vue.js的核心是一个响应的数据绑定系统,它让数据与DOM保持同步非常简单。Vue.js拥有数据驱动的视图概念。一旦创建绑定,DOM将与数据保持同步,每当我们修改了数据,DOM也会相应地更新。那么这种 数据绑定的原理 是什么呢?Vue是通过数据劫持结合发布订阅模式的方式来实现的,也就是数据和视图的同步。其核心的方法便是通过Object.defineProperty() 来实现对属性的劫持,达到监听数据变动的目的,要实现MVVM的双向绑定,就必须要实现以下几点:(1)实现一个数据监听器Observer

2021-08-03 15:25:18 1455

原创 Js:indexOf() 和 lastIndexOf() 的区别

ECMAScript 5 为数组实例添加了两个位置方法: indexOf() 和 lastIndexOf() 。这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。indexOf() 方法从数组的开头(位置 0)开始向后查找lastIndexOf() 方法则从数组的末尾开始向前查找。这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回-1。在比较第一个参数与数组中的每一项时,会使用全等操作符;也就是说,要求查找的项必须严格相等(就像使用===一样)。...

2021-08-01 17:28:58 582

原创 【算法天天练】反转字符串问题

个人解题思路:双指针问题,指针 i 指向头部,指针 j 指向尾部,当i<=j,进入循环:两个指针下的值两两交换。在两两交换时借助第三方暂存值,我这里是设置mid来暂存值,不然得不到自己想要的交换结果。(做题时脑子一直卡住了,后面才恍然大悟,借助一个暂存地方不就得了吗(捂脸))代码如下:var reverseString = function(s) { let left =0,right=s.length-1,mid; while(left <= right){ .

2021-08-01 16:32:22 96

原创 【算法天天练】两数相加等于目标值+有序数组问题

个人思路:A+B = target设numbers[0]为A,for循环numbers[1]及后面的数据,枚举是否符合A+B=target 的B值,若无,则设numbers[1]为A,for循环numbers[2]及后面的数据,枚举是否有符合A+B = target的B值,以此类推。这样的方法显然是很暴力的,倘若题目所给的数组的数据很庞大,那么此解题思路根本不实用。时间复杂度为O(n2)优化解题思路抓关键字 “升序排列的数组” ==>有可能会涉及到二分法/折半查找/双指针先分成三种情况.

2021-08-01 15:25:25 181

原创 【算法天天练】移动零问题

个人解题思路:抽象成双指针问题,指针 i 指向头部,指针 j 指向尾部,当nums[i]==0 时,操作完将nums[i]取出来再插入到数组尾部,此时 j 要向前移动一位,然后再继续重复上一步动作(比较索引值是否为0),若nums[i] 不为0,i 向后移动一位,再重复上一步动作,直至当指针 i 与指针 j 相等,即已经遍历完整个数组,结束。需注意:每次比较当前索引的值时,若为0,则插入数组的最尾部,此时nums数组是会产生变化的。不能直接i++,因为会忽略到变化后数组中索引为 i 的值,而是需要辅助 .

2021-08-01 11:01:31 122

原创 【面试】涉及Vue生命周期的常见面试题:Vue获取节点、请求异步数据在哪个生命周期、获取不到异步数据dom如何解决

文章目录Vue生命周期Vue获取节点在哪个生命周期?Vue请求异步数据是在哪个生命周期?Vue获取不到异步数据dom的原因及解决方案先分析一下原因:那么解决方法有哪些呢?Vue生命周期图示:结合代码理解:Vue.component('Test',{ template:` <div> <p>{{msg}},我是test组件</p> <button @click='msg+=" Danl

2021-07-31 22:00:06 1558

原创 Js:【详细】splice()方法、split()方法、replace()方法和 join()方法的区别

splice()方法、split()方法和replace()方法的区别splice() 的主要用途是向数组的中部插入项,但使用这种方法的方式则有如下 3 种:(1) 删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项数。例如, splice(0,2) 会删除数组中的前两项。(2)插入:可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。例如,splice(2,0,“r

2021-07-31 18:47:12 1382

原创 【算法天天练】Rotate Array 旋转数组

难度:中等个人解题思路:把数组排在最后的值不断往数组头部拿,拿的次数是k次。var rotate = function(nums, k) { for(let i = 0 ; i<k ; i++){ nums.unshift(nums.pop()) } return nums};但是执行的结果显示不知道是什么原因…借鉴他人解法:思路:对于数组nums,向右移动k位移,等价于将原数组第nums.length-k位置到末尾移动到前面var

2021-07-30 15:39:38 137

原创 【算法天天练】双指针:有序数组的平方

个人解题思路:将一个数组里面的数据完成平方,再一个个插入新数组,在插入的过程中做一个有序排序。但实际操作的时候卡在了第二步,如何将新数组有序排序呢??经借鉴他人解题方法,才恍然大悟,需要采用 “双指针” 思想,先比较指针所指向的数据的绝对值(Math.abs方法)进行比较,将大的数值平方后插入新数组的头部(unshift方法)。期间,指针移动(移动规律:若是尾指针的值插入到新数组,尾指针需向前移动;若是头指针的值插入到新数组,则头指针需向后移动),直至旧数组的值全部插入新数组完成。var sorte.

2021-07-30 11:06:17 152

原创 速收藏!面试记录(内附详细答案)

昨天去一家公司面试,去之前一直复习vue和小程序的知识,例如vuex、vue-router等等…没想到一过去被问到的都是基础题(框架用久了,对于基础题,有点生疏,记录一下…)1.margin塌陷问题/margin合并问题塌陷解决方法:a.overflow:hiddenoverflow:hidden 可解决margin塌陷问题b.触发BFC触发bfc解决父子元素嵌套垂直方向margin塌陷问题经典CSS缺陷–margin塌陷问题和margin合并问题2.行内元素和块级元素行内元素和块级元素

2021-07-30 09:57:59 442

原创 【SHEIN】校招前端岗位笔试题

刚结束SHEIN的线上前端岗位笔试,笔试题还热乎着~SHEIN的线上笔试是在牛客网进行的,分为两Part:选择题和问答题SHEIN简介SHEIN是一家成立于2008年的快时尚出口跨境电商互联网公司,集商品设计、仓储供应链、互联网研发以及线上运营于一体。 经历十年高速发展,目前在南京、广州、深圳、佛山、义乌、美国、比利时、迪拜、马尼拉等地设有分支机构,国内员工规模已超过5000人。一、选择题*10选择题涉及太多选项了,就不一一附上(我也记不下那么多)主要考查的知识点:1、promise:then

2021-07-28 17:10:48 1861

原创 【算法天天练】二分查找(折半查找)+动态搜索插值

难度:简单题意抽象化:在一个有序数组里查找目标值是否存在首先想到的解题思路:for循环数组,一一去比较目标值是否在数组里存在:for(let i =0 ;i<nums.length;i++){ if(target === nums[i]){ return [i]}....//省略其实这种解题思路是非常低效的,我们要学会抓取题目关键字:有序整型数组,由于数组是有序的,我们可以用二分查找的方法来解决。//正确高效解题思路var search = function(nums, t

2021-07-28 13:58:26 184

原创 Vue获取数组的数组数据

Q:如何在vue获取数组的数组?A:用到js的map对象方法一、data里要先定义好有两个数组二、主要代码这样就可以获取到数组的子数组数据

2021-05-23 14:29:49 10812

原创 【面试】细谈CSS选择器以及它们的权重关系?

文章目录1.CSS选择器都有哪些?**·元素选择器****·类选择器**·ID选择器·属性选择器·后代选择器(包含选择器)·子元素选择器·相邻兄弟选择器·伪类·伪元素2.CSS选择器的权重关系,优先级?1.CSS选择器都有哪些?·元素选择器html {color:black;}h1 {color:blue;}h2 {color:silver;}·类选择器<h1 class="important">This heading is very important.</h1&

2021-02-22 18:46:14 259

原创 什么叫标准的文档流?

标准文档流标准流指的是在不使用其他的与排列和定位相关的特殊CSS规则时,各种元素的排列规则。HTML文档中的元素可以分为两大类:块级元素和行内元素。块级元素:块状元素排斥其他元素与其位于同一行,可以设定元素的宽(width)和高(height),块级元素一般是其他元素的容器,可容纳块级元素和行内元素。常见的块级元素有div, p ,h1~h6等。行内元素:行内元素不可以设置宽(width)和高(height),但可以与其他行内元素位于同一行,行内元素内一般不可以包含块级元素。行内元素的高度一般由元素内

2021-02-20 18:00:40 2197

原创 【面试】什么是回流和重绘?减少或避免页面文档回流、重绘的方案有哪些?

文章目录一、回流、重绘是什么?二、什么时候会发生回流和重绘?三、(优化)如何减少或避免页面文档回流?很多面试官可能都会问到如何减少或避免文档的回流、重绘,今天就学习并整理这一篇博客,分享给大家~一、回流、重绘是什么?在回答如何减少或避免文档回流之前,可能很多人还不明白什么叫做回流。首先先了解一下浏览器的渲染原理:·解析HTML,生成DOM树,解析CSS,生成CSSOM树·将DOM树和CSSOM树结合,生成渲染树(Render Tree)而回流呢,就是Render Tree的部分或全部因元素

2021-02-20 17:00:18 2140 2

转载 谈谈HTML5语义化标签及其优点

很多面试官会问:谈谈你对 HTML5语义化标签的理解。那么本篇博客专门解答一下这个问题。什么是语义元素?语义是指对一个词或者句子含义的正确解释。很多html标签也具有语义的意义,也就是说元素本身传达了关于标签所包含内容类型的一些信息。例如,当浏览器解析到标签时,它将该标签解释为包含这一块内容的最重要的标题。h1标签的语义就是用它来标识特定网页或部分最重要的标题。为什么要语义化?语义化标签的优点代码结构: 使页面没有css的情况下,也能够呈现出很好的内容结构有利于SEO: 爬虫依赖标签来确定关键字的

2021-02-20 11:36:41 2606

原创 (整理)盒子模型的构成?在布局使用中要注意什么?

一、盒子模型构成:盒模型的组成:content(内容区)+padding(填充区)+border(边框区)+margin(外界区)作用:控制元素和元素之间,或者元素和内容之间的位置关系。说明:content(内容):盒子的内容,显示文本和图像。border(边框):围绕在内边距和内容外的边框。padding(内边距):清除内容周围的区域,内边距是透明的。margin(外边距):清除边框外的区域,外边距是透明的。盒子的大小怎么计算呢?我们举个实例:如下图所示它的效果图是这样的:ar

2021-02-19 18:56:47 2120 1

原创 什么是单页应用?它的优缺点?其缺点的解决方案是什么?

文章目录一、什么是单页应用?二、单页应用的优缺点1.优点2.缺点三、单页应用缺点的解决方案一、什么是单页应用?从字面上来理解:单页面应用(SPA--------single page application),一个web项目只有一个页面(即一个HTML文件);一个项目的所有页面的所有内容被分成了很多的小块(即组件),可以重复利用的,可以任意调整的组件,每个组件就是一个独立的部分(包括html,css和javascript代码)。从使用的过程来理解:单页面应用指一个系统只加载一次资源,然后下面的操

2021-02-18 18:32:55 5705 3

原创 margin和padding分别适合什么场景来使用?

margin和padding是在html中的盒模型的基础上出现的。margin是盒子的外边距,即盒子与盒子之间的距离,而padding是内边距,是盒子的边与盒子内部元素的距离。那什么时候用margin,什么时候用padding呢?1.margin是用来隔开元素与元素的间距,padding是用来隔开元素与内容的间隔。2.margin用来布局分开元素,使得元素与元素之间互不相干。3.padding用来布局元素与内容之间的间隔,让内容(文字)与(包裹)元素之间有一段空间。使用margin的场景:1.

2021-02-18 16:58:03 4037

原创 CSS3的知识点框架你都清楚了吗?快mark这份思维导图吧!!!

前言今年寒假我(本科大三在读)很幸运地找到了第一份前端的实习,位置是深圳南山区~在实习的过程中不断发现自己知识点的薄弱,很多之前学过的知识点早已都忘得光光了。借此实习机会在工作的时候也开始不断地查漏补缺,自己平时比较喜欢用XMind这款软件,所以将在工作中常用的CSS3知识点都罗列出来,希望自己系统一点地去温习,现在也分享给大家~~(PS:有红色小图标的是比较常用到的)用大图的话不清晰,所以我只能截图一点点放进去(排版勿吐槽T 0 T)如果感兴趣的话可以评论区或私聊我拿PDF版哦如有欠缺,请

2021-02-05 19:00:05 295

原创 解决自定义tabBar选中时的状态变换:通过 getTabBar 接口获取组件实例

问题描述:底部tabBar在切换时都会有对应被选中或未被选中的状态,我是在页面定义判断active与index的值是否相等,相等则显示被选中状态,反之显示未被选中状态。 原因分析:提示:这里填写问题的分析:例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Handler.sendMessage(),其中 obtainMessage 方式当数据量过大时,由于 MessageQuene 大小也有限,所以当 message 处理不及时时,会造成先传

2021-02-05 16:58:08 5539 4

原创 一步步教你如何实现小程序倒计时三二一后跳转页面功能,附加倒计时过渡动画

前言实现此效果涉及到的知识点:1.this.setData({}) 实现页面的同步更新2.设置定时器和清除定时器3.附:监听css3动画animation结束触发:bindanimationend一、页面内容及布局样式/*index.qml*/<view class="mask-num" bindanimationend='animationend'> {{countDownNum}}</view><view class="mask-num.

2021-02-04 11:26:05 2253

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除