javaScript
艾小逗
这个作者很懒,什么都没留下…
展开
-
js控制并发请求的最优解和js控制调用频率,大量请求延迟执行
思路:维护一个运行池,一个等待队列,出一个进一个,控制运行池的大小。原创 2024-06-03 16:16:10 · 461 阅读 · 0 评论 -
js四舍五入和计算精度问题处理
numberMultiply(0.2, ‘0.7’) // 0.14 可以是字符串类型的数字。我使用的是big.js,基于big.js库封装了下工具方法,当然也可以用其他库,如。numberMultiply(0.2, 0.7) // 0.14 乘法。numberDiv(5, 2) // 2.5 除法。numberMinus(5, 2) // 3 减法。numberPlus(5, 2) // 7 加法。js中加减乘除,部分数据会存在计算不准确。原创 2024-05-30 17:14:02 · 579 阅读 · 0 评论 -
向npm发布自己写的vue组件,使用vite创建项目
向npm发布自己写的vue组件,使用vite创建项目。原创 2024-05-24 11:24:43 · 531 阅读 · 0 评论 -
js toFixed()四舍五入丢失精度问题处理
js toFixed()四舍五入丢失精度问题处理,看了下lodash的代码,大概是通过使用科学计数法扩大10的n次,将操作数化为整数运算,可以避免精度丢失。原创 2024-05-22 16:08:58 · 307 阅读 · 0 评论 -
js中new Date().toXXX方法记录
【代码】js中new Date().toXXX方法记录。new Date().toLocaleDateString();new Date().toLocaleTimeString();new Date().toLocaleString();原创 2022-11-21 16:12:00 · 613 阅读 · 1 评论 -
html2canvas将html代码生成canvas转换成图片,并且保存到本地
/ canvas.toDataURL 返回的是一串Base64编码的URL。// image.onclick = fnSavePic // 点击图片保存。// 从 canvas 提取图片 image。//新Image对象,可以理解为DOM。完整实例:【复制粘贴到本地查看效果】// 传入 base64 图片。// 指定格式 PNG。原创 2022-08-23 14:37:54 · 1937 阅读 · 0 评论 -
js复制方法navigator.clipboard兼容性处理,控制台直接执行报错 DOMException: Document is not focused
js复制方法navigator.clipboard兼容性处理,直接执行报错 DOMException: Document is not focused如果`navigator.clipboard`不可以使用的话,使用`document.execCommand`进行复制原创 2022-07-05 09:48:55 · 11370 阅读 · 7 评论 -
js发布订阅模式的简单实现基本流程及原理了解
js发布订阅模式的简单实现及原理了解event.on方法,是注册事件,将执行函数添加进eventObj 中,可注册多个事件event.off方法,是移除事件,将执行函数从eventObj 中移除 - 如果没有参数,移除所有事件 - 如果只带事件名参数,就移除这个事件名下的所有事件 - 如果带有两个参数,那么就表示移除某个事件的具体函数event.emit方法,是执行事件,执行某个事件中的所有执行函数......原创 2022-06-15 09:45:28 · 841 阅读 · 0 评论 -
axios封装及刷新token操作,用于登录失效后刷新token,并返回成功结果
axios封装及刷新token操作,用于登录失效后刷新token,并返回成功结果,- 在本地没有旧的token的情况下,不进行刷新操作;- 如果刷新token接口还是失败的话,不再进行刷新操作;- 如果同时请求多个接口,只第一个接口触发刷新token操作,其它接口等待刷新成功后重新请求并返回结果原创 2022-04-02 14:10:00 · 1827 阅读 · 0 评论 -
适用于 async/await 的 axios封装
适用于 async/await 的 axios封装不想写 .then()和.catch还想处理错误信息自己封装的方法是,不管错误和失败都使用 resolve来处理,欢迎大家讨论使用方便度及问题先看下使用方法在使用的时候可以 const [err, res] = await axiosRequest('get', '请求url', {}, {})返回的 err就是请求失败的数据返回的 res就是请求成功的数据const [err, res] = await axiosRequest('get原创 2021-12-28 09:55:56 · 1144 阅读 · 0 评论 -
自定义格式化日期时间js方法
自定义格式化日期时间js方法 formatDate(new Date('2021/12/26'), 'yyyy/MM/dd HH:mm:ss 星期w') // 2021/12/28 09:49:44 星期二原创 2021-12-28 09:54:06 · 532 阅读 · 0 评论 -
js 获取 url 参数 URLSearchParams
js 获取 url 参数方法一 URLSearchParams 方法// 创建一个URLSearchParams实例const urlSearchParams = new URLSearchParams(window.location.search);// 把键值对列表转换为一个对象const params = Object.fromEntries(urlSearchParams.entries());console.log(params)方法二 split 方法function getP转载 2021-12-14 17:13:26 · 3140 阅读 · 0 评论 -
html设置吸顶效果
html设置吸顶效果方法一:js设置window.onscroll = function () { // 滑动时 搜索框吸顶 var headerHeight = $('header')[0].offsetHeight console.log(getScroll()) console.log(headerHeight + '-----' + getScroll().top) if (headerHeight <= getScroll().top) {原创 2021-08-05 19:38:14 · 1157 阅读 · 0 评论 -
js new Date()打印出来是Invalid Date
js new Date()打印出来是Invalid Date检查了一下,确定了问题是因为接口返回的日期格式是: "2021-05-18 10:00:00"这样 new Date("2021-05-18 10:00:00") 就会是 Invalid Date解决办法是将 日期中的 - 替换成 / 这样 new Date("2021/05/18 10:00:00") 就可以var dStr = "2021-05-18 10:00:00"var d = new Date(dStr.replace(/-/原创 2021-05-20 14:40:11 · 3460 阅读 · 0 评论 -
js上传图片限制图片尺寸方法
上传图片限制图片尺寸async beforeUploadPicture(file) { // 直播大图 const width = 347 const height = 115 const isSize = await new Promise(function(resolve, reject) { const _URL = window.URL || window.webkitURL const img = new Image()原创 2021-03-19 15:00:25 · 451 阅读 · 1 评论 -
js小数位不足位数补0,随机生成n条手机号,用于测试
function repairZero(num, len) { if(String(num).length > len) return num; return (Array(len).join(0) + num).slice(-len);}js随机生成n条手机号,用于测试// 位数不足补0 function repairZero(num, len = 4) { if (String(num).length > len) return num;原创 2020-10-23 14:21:02 · 243 阅读 · 0 评论 -
js将文件大小字节转换成B,KB,MB,GB,TB方法
js将文件大小字节转换成B,KB,MB,GB,TB方法目录js将文件大小字节转换成B,KB,MB,GB,TB方法使用if-else语法使用三元表达式语法使用if-else语法/** * 文件大小 字节转换单位 * @param size * @returns {string|*} */export const filterSize = (size) => { if (!size) return ''; if (size < pow1024(1)) return size原创 2020-09-30 14:52:53 · 6528 阅读 · 0 评论 -
js图片压缩后上传方法,图片超过1M先进行压缩,然后再上传
js图片压缩后上传方法,图片超过1M先进行压缩,然后再上传图片上传目录js图片压缩后上传方法,图片超过1M先进行压缩,然后再上传html代码js代码html代码<input type="file" name="file" class="file" id="uploadImg" multiple accept="image/jpg, image/jpeg, image/png" onchange="uploadFileChang()">js代码function uploa原创 2020-09-24 15:47:27 · 2569 阅读 · 2 评论 -
textarea字数限制输入字数,超字数时截取字符串显示
标题textarea字数限制输入字数,超字数时截取字符串显示<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>计数限制-aixiaodou.cn</title> <style> .tips { height: 200px; overflow: auto; } </style>原创 2020-09-23 16:31:56 · 551 阅读 · 2 评论 -
js/css自定义滚动,聊天滚动,div滚动,video组件全屏事件监听
自定义滚动由右向左滚动js// 右 -> 左function markun(obj, delay, long, speed) { var ddd = obj.length; setTimeout(function () { setInterval(function () { for (var i = 0; i < obj.length; i++) { if ($(obj[i]).position().left <= (-500)) {原创 2020-08-27 17:10:17 · 272 阅读 · 0 评论 -
webpack基本使用,打包 html多页面 scss预处理器 autoprefixer浏览器前缀 使用jquery,代码压缩,命令行自动生成html和js
webpack基本使用目录webpack基本使用打包基本使用打包js打包htmlpackage.json 中依赖包问题:html中img src引入图片不打包使用scss安装scsswebpack.config.js配置使用extract-text-webpack-plugin使用 autoprefixer安装autoprefixer根目录新建`postcss.config.js` 文件webpack.config.js配置package.json配置安装jquerynpm安装jqueryCND引入jqu原创 2020-08-20 14:41:06 · 707 阅读 · 0 评论 -
cookie/sessionStorage/localStorage封装使用
cookie/sessionStorage/localStorage封装使用cookie/*设置cookie*/function setCookie(name, value, expires) { var exp = new Date(); exp.setTime(exp.getTime() + expires * 1000); document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTStri原创 2020-08-14 17:13:12 · 224 阅读 · 0 评论 -
js防抖debounce和节流throttle区别和实现
防抖当持续触发事件的时候,函数是完全不执行的,等最后一次触发结束的一段时间之后,再去执行。使用场景【输入实时查询、多次点击按钮】持续触发不执行不触发的一段时间之后再执行节流节流的意思是让函数有节制地执行,而不是毫无节制的触发一次就执行一次。什么叫有节制呢?就是在一段时间内,只执行一次。使用场景【监听鼠标滚动,下拉加载数据】持续触发并不会执行多次到一定时间再去执行防抖演示:(频繁调用,只执行最后一次)节流演示:(频繁调用,每隔一段时间执行一次)代码演示<!DO转载 2020-07-15 15:55:58 · 345 阅读 · 0 评论 -
js全屏模式下无法监听esc按键,解决办法:onresize 监听窗口改变
js全屏模式下无法监听esc按键,解决办法:onresize 监听窗口改变window.onresize = function() { if (!checkFull()) { // 要执行的动作 }}function checkFull() { var isFull = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenEl原创 2020-07-14 17:50:45 · 5138 阅读 · 3 评论 -
bsgrid-最简单的表格
bsgrid 支持json、xml数据格式 本文使用bsgrid读取json数据引入文件bsgrid.all.min.css CSS样式jquery.min.js jQuerygrid.zh-CN.min.js JS本地化脚本bsgrid.all.min.js JS脚本&amp;amp;amp;amp;lt;link rel...原创 2018-05-11 15:20:55 · 3490 阅读 · 1 评论 -
百度地图api添加覆盖点实现,搜索添加,鼠标点击添加,鼠标测距
标题百度地图api添加覆盖点实现,搜索添加,鼠标点击添加,鼠标测距AIXIAODOUCN博客script引入百度Api的时候,需要自己申请key用到了layer弹出层,可在layui官网下载 https://layer.layui.com/具体代码实现:<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&原创 2020-06-18 15:27:10 · 1145 阅读 · 6 评论 -
常用正则表达式记录 身份证号手机号正数两位小数Email域名密码校验
身份证号: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/手机号: /^1[3456789]\d{9}$/数字: /^[0-9]*$/n位数字: /^\d{n}$/至少n位数字:/^\d{n,}$/m-n位数字:/^\d{m,n}$/正数(包括小数):/^[+]{0,1}(\d+)$|^[+]{0,1}(\d+\.\d+)$/正整数(不包括小数): /^[+]{0,1}(\d+)$/Email地址:/^\w+([-+.]\w+)*@\w+([-.]\w+原创 2020-06-18 11:50:23 · 488 阅读 · 0 评论 -
JS实现深拷贝和浅拷贝及区别
JS实现深拷贝和浅拷贝及区别深拷贝和浅拷贝对比浅拷贝优:与深拷贝相比不占用内存,不影响性能缺:因使用的同一个地址,B值改变,A值也会随着改变深拷贝优:有自己独立属性、地址,不可被更改缺:与浅拷贝相比占用内存,并非常影响性能问题,不建议大范围的使用简单数组实现深拷贝方法通过for循环遍历赋值arr.splice(),截取数组元素(start, end) 默认...原创 2020-04-22 10:22:04 · 368 阅读 · 0 评论 -
es6新整理
个人笔记:学习记录一、数组:1. 求数组最大数:// ES5写法Math.math.apply(null, [14, 3, 77]);// ES6写法Math.max(...[14, 3, 77]);// 等同于Math.max(14, 3, 77);2. 将一个数组添加到另一个数组的尾部// ES5写法var arr1 = [0, 1, 2];var arr2 = [3...原创 2020-04-13 16:43:40 · 159 阅读 · 0 评论 -
eslint配置 关闭===代替==的告警 总是提示添加句尾分号
.eslintrc.js 中 rules配置选项总是提示添加句尾分号;关闭=代替的告警关闭switch没有default的告警关闭数组函数没有return的告警关闭a标签href无url的告警关闭jsx a标签无效的告警关闭jsx a标签无内容的告警rules:{ 'semi': ["error", "always"], // 总是提示添加句尾分号 'eqeqeq': '...原创 2020-04-13 16:40:44 · 2325 阅读 · 0 评论 -
js时实现鼠标拖动div
实现js拖动div实现步骤:鼠标按下时,标记元素为可拖动状态,并记下鼠标当前位置的偏移;鼠标开始移动,判断元素状态是否可以拖动,如果是则更新元素位置到当前鼠标的位置;放开鼠标后,元素变为不可拖动状态。图示解释:代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF...原创 2020-04-09 16:55:26 · 2654 阅读 · 4 评论 -
字节面试:实现函数接受任意二叉树,求二叉树所有根到叶子路径组成的数字之和
题目:实现函数接受任意二叉树,求二叉树所有根到叶子路径组成的数字之和。解决办法:使用递归方法层层遍历相加// 1// 2 3// 4 5 6 7//结果:(1+2)+(1+3)+(2+4)+(2+5)+(3+6)+(3+7) // 39// 实现函数接受任意二叉树,求二叉树所有根到叶子路径组成的数字之和。class TreeNode { value: nu...原创 2020-03-29 19:30:39 · 426 阅读 · 0 评论 -
提取数组对象中的id到数组中
从返回的list中提取id var alist ={"retcode":"0","retdesc":"操作成功","serverIp":"10.8.0.1","treeList":[{"children":[{"children":[{"name":"添加","id":4,"privilegeType":2,"status":1},{"name":"修改","id":5,"privilegeTy...原创 2020-03-23 17:13:19 · 5619 阅读 · 0 评论 -
js不用for循环生成0-10的数组方法,使用递归方法
1、使用递归方法let arr = []function addNum(num){ if (num < 10) { arr.push(num) addNum(++num) } else { console.log(arr) }}addNum(0)2、Array.apply()let arr = Array.apply(null, {length: 10}...原创 2020-03-23 17:08:59 · 4189 阅读 · 0 评论 -
map() forEach() some() every() filter() find() findIndex() slice() splice() split()
map()、forEach()、filter() 、find()、findIndex()、slice()、splice()、split()map() 方法map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。map() 方法按照原始数组元素顺序依次处理元素。map() 不会对空数组进行检测map() 不会改变原始数组nums.map(x => x + ...原创 2020-03-23 11:28:08 · 337 阅读 · 0 评论 -
7.000000000000001 问题:js小数点失精 0.7*100 0.14*100小数点失精算法修正
关于小数点失精问题,解决办法:Math.round(0.07*100)> 0.14*100< 14.000000000000002> 0.07*100< 7.000000000000001> Math.round(0.07*100)< 7原创 2020-03-18 19:24:22 · 1326 阅读 · 0 评论 -
js方法获取32位UUID
获取ID方法// 获取UUIDfunction getUUID (n = 32) { var str = "abcdefghijklmnopqrstuvwxyz0123456789"; // 可以作为常量放到random外面 var result = ""; for(var i = 0; i < n; i++) { result += str[parseInt(M...原创 2020-01-10 10:16:27 · 1667 阅读 · 0 评论 -
js时间戳格式化方法
js时间戳格式化方法function formatTime(value) { if(value) { let date = new Date(value * 1000) // 时间戳为秒:10位数 //let date = new Date(value) // 时间戳为毫秒:13位数 let year = date.getFullYear() let month = date....原创 2019-12-02 17:21:18 · 3544 阅读 · 0 评论 -
string 转换 json、array,JSON.parse(),JSON.stringify(),join(),split(),toString()
string 转换 json、array// string 转换 json 使用 JSON.parse() 方法将数据转换为 JavaScript 对象let str = '{"a": "1", "b": "2"}'console.log(JSON.parse(str)) // {a: "1", b: "2"}// json 转换 string 使用 JSON.stringify() ...原创 2019-11-28 11:39:49 · 502 阅读 · 0 评论 -
动态展示标题-通过浏览器标签显示状态Document.visibilityState防止当页面正在渲染时加载资源, 或者当页面在背景中或窗口最小化时禁止某些活动
Document.visibilityStatedocument.visibilityState 的几个状态值:‘visible’ : 此时页面内容至少是部分可见. 即此页面在前景标签页中,并且窗口没有最小化.‘hidden’ : 此时页面对用户不可见. 即文档处于背景标签页或者窗口处于最小化状态,或者操作系统正处于 ‘锁屏状态’ .‘prerender’ : 页面此时正在渲染中, 因此...原创 2019-10-17 18:32:02 · 678 阅读 · 0 评论