- 博客(25)
- 收藏
- 关注
原创 element-ui table取消高亮
el-table 高亮的实现是给 tr 加 current-row 类名,取消高亮:this.$refs.tableRef.setCurrentRow(-1);
2020-10-20 15:08:17
3301
1
原创 JS 字符串中井号固定位置添加换行符
var str = '#张三#我这里有物资#李四#前方有敌人#王五#不要怂,一起上';var tempArr = [];var pos = str.indexOf("#");while(pos > -1){ tempArr.push(pos); pos= str.indexOf('#',pos+1);}console.log(tempArr);function insertStr(soure, start, newStr){ return soure.slice(0,
2020-08-20 11:32:08
910
原创 DHTMLX Gantt 甘特图自定义样式
/* 任务线 */ .gantt_task_line{ height: 16px !important; line-height: 16px !important; margin-top: 8px; border: none !important; } /* 里程碑 */ .gantt_task_line.gantt_milestone{ width: 30px !important; height: 30px !important; ..
2020-08-19 16:21:39
5216
原创 @media screen 媒介查询顺序问题
min-width@media (min-width: 1366px){ //>=1366的设备 }@media (min-width: 1440px){ //>=1440的设备 }@media (min-width: 1920px){ //>=1920的设备 }max-width@media (max-width: 1920px){ //>=1920的设备 }@media (max-width: 1440px){ //>=1440的设备 }@media (ma
2020-08-11 11:22:36
494
原创 iframe父子通信postmessage
父var info = { message: "Hello Son!"};//现有模板的数值let templatelistvalue//发送跨域信息function sendInfo(){ var sonIframe= document.getElementById("ifra2"); sonIframe.contentWindow.postMessage(info, '*');}//接收跨域信息window.addEventListener('message', funct
2020-08-08 10:31:43
183
原创 DOM事件委托
首先提两个疑问:儿子被点击,算不算点击老子?那么先调用老子的函数还是先调用儿子的函数?首先第一个问题,儿子被点击,肯定算点击了老子。对于第二个问题,要考虑实际情况,这就涉及到了捕获和冒泡。捕获与冒泡事件流描述的是从页面中接受事件的顺序,分为冒泡流和捕获流区别事件冒泡 是指事件从 最具体的元素 接收,然后逐级向上传播,直到不具体的节点(通常指文档节点);事件捕获 相反,它是从 不具体的节点 开始,逐步到最具体的节点;因此我们可以说,冒泡先调用儿子的监听函数,捕获先调用老子的监听函
2020-05-23 00:57:34
283
原创 JavaScript 进阶
1. 谈谈变量提升通常提升的解释是说将声明的代码移动到了顶部,这其实没有什么错误,便于大家理解。但是更准确的解释应该是:在生成执行环境时,会有两个阶段:第一个阶段是创建的阶段,JS 解释器会找出需要提升的变量和函数,并且给他们提前在内存中开辟好空间,函数的话会将整个函数存入内存中,变量只声明并且赋值为 undefined。第二个阶段,也就是代码执行阶段,我们可以直接提前使用。...
2020-05-17 23:41:43
146
原创 react setState 箭头函数括号问题
从官方API中可以看到示例:State 的更新可能是异步的,出于性能考虑,React 可能会把多个 setState() 调用合并成一个调用。要解决这个问题,可以让 setState() 接收一个函数而不是一个对象。这个函数用上一个 state 作为第一个参数,将此次更新被应用时的 props 做为第二个参数:// Correctthis.setState((state, props) => ({ counter: state.counter + props.increment}));
2020-05-16 18:20:37
1654
原创 JS一些输出是什么
暂时性死区通过 let 和 const 关键字声明的变量也会提升,但是和 var 不同,它们不会被初始化。在我们声明(初始化)之前是不能访问它们的。这个行为被称之为 暂时性死区。当我们试图在声明之前访问它们时,JavaScript 将会抛出一个 ReferenceError 错误。function sayHi() { console.log(name); // undefined console.log(age); // Uncaught ReferenceError: Cannot access
2020-05-12 12:49:47
335
原创 前端一些小的知识点ZF
1、call和apply哪个性能更好?call 的性能要比 apply 稍微好点,尤其是传给函数的参数超过三个以上的时候。2、console.timeconsole.time 可以测试出一段代码执行的时间:console.time('A');// code goes here ...console.timeEnd('A'); // 输出代码执行需要的时间...
2020-05-09 20:54:01
178
原创 Node.js(一):模块查找规则
模块查找规则当前模块拥有路径但没有后缀时require('./find.js') // 1require('./find') // 2require 方法根据模块查找路径查找模块,如果是完整路径,直接引入模块如果模块后缀省略,先找同名 JS 文件,再找同名 JS 文件夹如果找到了同名文件夹,找文件夹中的 index.js如果文件夹中没有 index.js 就会去当前文件夹中的 ...
2020-04-29 12:11:50
375
1
原创 nrm —— 解决npm速度慢的问题
第三方模块 nrmnrm (npm registry manager):npm下载地址切换工具解决 npm 默认的下载地址在国外,国内下载速度慢。使用使用 npm install nrm -g 下载查询可用下载地址列表 nrm ls切换 npm 下载地址 nrm use 下载地址名称$ nrm ls*npm ---- https://registry.npmjs.org/ c...
2020-04-28 01:03:07
394
原创 Vue Router(四):路由进阶
导航守卫“导航”表示路由正在发生改变。导航守卫可以看做是 vue-router 的生命周期钩子vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航植入路由导航的机会:全局的, 单个路由独享的, 或者组件级的参数或查询的改变并不会触发进入/离开的导航守卫(通过观察 $route 对象来应对这些变化,或使用 beforeRouteUpdate 的组件内守卫通过观察 ...
2020-04-26 21:58:44
251
原创 Vue Router(三):命名视图、重定向和组件传参
命名视图同时 (同级) 展示多个视图,而不是嵌套展示如果 router-view 没有设置名字,那么默认为 default<router-view class="view one"></router-view><router-view class="view two" name="a"></router-view><router-...
2020-04-26 19:29:31
265
原创 Vue Router(二):编程式导航
router-link 实质上是创建 a 标签,我们也可以通过 router 的实例方法来实现。router.pushrouter.push(location, onComplete?, onAbort?)当你点击 <router-link> 时,这个方法会在内部调用,所以说,点击 <router-link :to="..."> 等同于调用 router.push...
2020-04-26 18:06:28
132
原创 Vue Router(一):起步
我们需要做的是,将组件 (components) 映射到路由 (routes),然后告诉 Vue Router 在哪里渲染它们创建路由的步骤如果使用模块化机制编程,导入Vue和VueRouter,要调用 Vue.use(VueRouter);定义 (路由) 组件,或者从其他地方import;定义路由——每个路由应该映射一个组件;创建 router 实例,然后传 routes 配置;...
2020-04-26 17:54:54
241
原创 flex布局右对齐最后一个元素
很简单,只需要在flex子元素最后一个加上 margin-left: auto:.main { display: flex; }.a, .b, .c { background: #efefef; border: 1px solid #999; }.b { flex: 1; text-align: center; }.c {margin-left: auto;}详见:...
2020-04-22 16:22:32
556
原创 Vuex的表单处理
当在严格模式中使用 Vuex 时,在属于 Vuex 的 state 上使用 v-model 会有很多问题:v-model=“obj.msg”假设这里的 obj 是在计算属性中返回的一个属于 Vuex store 的对象,在用户输入时,v-model 会试图直接修改 obj.msg。在严格模式中,由于这个修改不是在 mutation 函数中执行的, 这里会抛出一个错误。解决方案一:监听in...
2020-04-20 22:59:22
194
原创 var a=b=1和var a=1,b=1的区别
案例:(function(){ var a=b=1;})()a //报错,a is not definedb //1var a = b = 1:这里面a是局部变量,b是全局变量;var a = 1, b = 1:这里面a和b都是局部变量。...
2020-04-13 16:08:35
1507
原创 几个变量提升的知识点
函数声明提升要在变量提升之前;if和for里的var定义的变量也是会提升的;if 里面的 var 和 function的声明方式,都会存在变量提升,但是并不赋值;
2020-04-13 16:00:35
213
原创 reduce 和 map
reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce() 对于空数组不会执行回调当数组中只有一个元素时无论参数函数是什么,reduce都返回数组中的唯一元素。可以理解为:[x1, x2, x3, x4].reduce(f) --> f(f(f(x1, x2), x3), x4)例子:var arr = [1];...
2020-04-12 18:24:06
96
原创 push和concat的区别
concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。区别:1,push()是在原数组的基础上修改的,执行push()方法后原数组的值也会变;concat()是先把原数组复制到一个新的数组,然后在新数组上进行操作,所以不会改变原数组的值。2,如果参数不是数组,push...
2020-04-12 17:51:22
2684
原创 函数的length属性
函数也是有length属性的,指的是形参的个数:function a(a, b, c) { //... }a.length //3如果想要拿到实参的个数,可以通过arguments.length:function a() { console.log(arguments.length);}a(2,4,6); //3...
2020-04-12 16:49:48
513
原创 类继承中super与this
如果子类想要继承父类的方法,同时在自己内部扩展自己的方法,利用super 调用父类的构造函数,super 必须在子类this之前调用。子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。...
2020-04-08 16:05:18
147
原创 getElementsByTagName获取的是什么
getElementsByTagName获取的可以说是类数组(array-like)对象,有length属性,不过并不是数组,还有函数的参数(arguments)也是类数组,多留意的话,诸如之类还有很多。getElementsByClassName也同理。可以使用 Array.from 转换成数组,Array.from() 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。...
2020-04-08 10:28:40
597
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人