![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaScript
风火一回
为了美好的明天,肆意而为!
展开
-
IndexDB学习
cookiecookie是保存在客户端本地的纯文本文件。其核心目的是为了解决服务器无法识别用户身份的问题。HTTP协议是无状态的cookie工作原理客户端发送一个请求到服务器服务器发送一个HttpResponse响应到客户端,其中包含Set-Cookie的头部客户端保存cookie,之后向服务器发送请求时,HttpRequest请求中会包含一个Cookie的头部服务器返回响应数据可以在浏览器调试栏中的Headers和Cookies中查看。cookie的属性属性项原创 2021-07-16 00:41:20 · 1897 阅读 · 1 评论 -
js校验远端图片是否存在
js校验远端图片是否存在,因为图片存在于服务器,是异步加载,所以需要使用Promise。 const checkImgExists = (imgurl) => { return new Promise((resolve, reject) => { const ImgObj = new Image(); // 判断图片是否存在 ImgObj.src = imgurl; ImgObj.onload = (res) => { res原创 2021-03-02 15:15:49 · 926 阅读 · 0 评论 -
js隐式转换
js隐式转换js基础数据类型:string、number、boolean、null、undefined、symbol当运算符在运算时,如果运算符两边的数据类型不一致,那么CPU就无法进行计算。js的编辑器会自动将运算符两边的数据转换为同一类型,从而让计算机识别并可以进行计算,这一转换过程由编译器自动自行,不需要程序员手动操作,所以称之为隐式转换。隐式转换规则字符串转换:字符串 + 变量;所有与字符串相加的基础变量都将转换为字符串。例如:“”+变量 //将变量转换为字符串number原创 2020-07-07 09:56:26 · 531 阅读 · 0 评论 -
面试集锦(五)
1.宏任务和微任务js是一门单线程语言,所以同一时间只能执行一个任务。为了防止主线程不阻塞,开发者提出了事件循环(Event Loop)。1.1任务执行的原则:js将任务分为了同步任务和异步任务。同步任务都在主线程上执行,形成一个执行栈。异步任务会进入到一任务列表注册他们,一旦异步任务有了执行结果,则将其放到一个任务队列中。当同步任务执行完成后,此时主线程空闲,则将异步任务队列放入执行栈中,依次执行。1.2 宏任务每次执行栈执行的的代码都可以看做一个宏任务。浏览器为了能够是js内部的原创 2020-05-12 19:40:56 · 393 阅读 · 0 评论 -
常见的十大排序算法详解
常见的十大排序算法详解性能对比名词解释n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同测试数组:arr: [2, 48, 4, 19, 27, 5, 14, 36, 38, 44, 3, 46, 47, 50, 26]冒泡排序算法思想:从数组头部...原创 2019-11-29 19:02:09 · 366 阅读 · 0 评论 -
jQuery.load()和Jsp的include的区别
1.jqueryObj.load() load()方法通过ajax获取服务端数据,并将放回数据放置到jqueryObj对象下。load(url,data,function(response,status,xhr)参数描述url规定要将请求发送到哪个 URL。data可选。规定连同请求发送到服务器的数据原创 2016-09-29 18:00:04 · 5908 阅读 · 0 评论 -
jquery自定义导入组件
1.组件js(function($){ //自定义去除字符串两边空白 String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g, ""); } //自定义导入组件 $.fn.customImport = function(methodOroptions,value){ if(typeof原创 2016-11-08 14:24:13 · 1819 阅读 · 0 评论 -
jquery中html()、text()、val()的使用和区别
HTML中获取对象内容的方法主要有3种,分别是html()、text()、val()。 obj.html():获取对象包裹的所有内容,包括其中的html标签内容。 obj.text():获取对象中的文本内容,不包含html标签。 obj.val():获取对象的value的值。例如: $("#source").html()的结果为:你好you,too $(原创 2015-03-06 13:49:10 · 4096 阅读 · 0 评论 -
easyui-validatebox多重校验
easyui的validatebox提供了validType属性支持校验和多重校验。但是我们发现当检验方法需要传参数时,默认的多重校验就不支持了。例如:validType="["validateAdd['字典值重复','$.fn.validatebox.defaults.rules.validateLength',100]",'textValid[32]']"会报String异常,原创 2016-11-17 18:16:59 · 2306 阅读 · 1 评论 -
easyui-datagrid特殊字符不能显示的处理
在easyui中datagrid、combobox、tree等组件都不能显示含有html标签的特殊字符,因为这些字符会被当作html标签被解析掉。这里给出了一个处理方案,希望对大家有帮助。以datagrid为例:找到jquery.datagrid.js文件,在其中添加如下方法:function escapeHtml(s) { if (s === undefined) {原创 2016-12-07 15:19:04 · 6053 阅读 · 3 评论 -
多张图片全部加载完成后再执行某操作
浏览器对图片的加载是异步的,很多时候我们需要等待图片完全加载后才能进行下一步操作。例如:获取图片父容器的高度,如果图片没加载完,高度基本为0,没有实用价值。单找图片的加载完处理可以使用:$(image).onload=function(){ 处理操作}多张图片全部加载完成后再做处理,可以使用如下方式:var imgdefereds=[]; //定义一原创 2016-12-29 11:24:31 · 6249 阅读 · 1 评论 -
js中Date()的用法及日期计算方法
Date函数是用来处理日期和时间的,其时间是和GMT时间1970年1月1日进行比较的。Date函数有6种构造函数,如下:new Date(); //获取当前系统日期new Date("month dd,yyyy hh:mm:ss"); new Date("month dd,yyyy");new Da原创 2016-08-25 16:01:48 · 34071 阅读 · 0 评论 -
$.extend()详解
JQuery的extend扩展方法: Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解。一、Jquery的扩展方法原型是: extend(dest,src1,src2,src3...); 它的含义是将src1,src2,src3...合并到dest中,返回值为合并原创 2016-10-25 15:20:56 · 18859 阅读 · 2 评论 -
js中的call()和apply()方法
1.call()语法:obj1.call(obj2[,param1,param2,...])定义:用obj2对象来代替obj1,调用obj1的方法。即将obj1应用到obj2上。说明:call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 obj2 指定的新对象。如果没有提供 obj2参数,那么 Global 对象被用作 obj原创 2016-10-25 15:15:41 · 20454 阅读 · 2 评论 -
IE下easyui的组件解析移位或微小变形
最近项目上遇到了如下问题:在IE下下拉框的下拉图标显示不全,最严重的是下拉数据右边线被遮挡了。错误原因: 因为缺少浏览器解析模型的声明。 各个浏览器对HTML、CSS的处理,在细节上存在很多差异,为了向W3C标准靠近,并且HTML、CSS的标准也在不断的发展,因此同一个浏览器的不同版本之间,也会存在细节处理上的不一致性。 现在浏览原创 2016-08-19 16:34:21 · 1213 阅读 · 0 评论 -
easyui-tabs第一个标签被遮挡
使用easyui-tabs时布局的时候发觉第一个标签的标题总是被遮挡,但是点击一下第二个标签再点击一个标签又恢复想要的效果了。例如:那么解决方法就可以是,加载完成后让它先选中第二个标签,再选择第一个标签,但这会出现一个问题,就是页面加载完成后会出现闪跳现象,即从第二标签页闪跳回第一标签页。找了很久,找到了另一个解决方法。easyui-tabs默认情况下标签是可以无限多的,所原创 2016-03-15 14:12:38 · 2362 阅读 · 0 评论 -
表单包裹的单个文本框,回车键自动提交表单
问题:当一个表单只包含一个文本框的时候,当文本框获取焦点之后,按回车键,表单会被自动提交。原因:浏览器默认事件。浏览器默认在这种情况下的回车键就是提交操作,会自动触发submit事件。解决方法:有3种。 1.去掉form层,手动提交,不依赖于form。 2.添加一个input输入框,例如:,注意是不生效的。 3.阻止浏览器默认事件。functio原创 2016-08-04 14:05:57 · 1394 阅读 · 0 评论 -
js获取url中的请求参数
//获取url中的请求参数值function getURLParam(param){ //正则表达式,以起始符或&为起始点+参数名+等于以非&起始的任意字符,以&或结束符为终止点 var reg = new RegExp("(^|&)" + param + "=([^&]*)(&|$)"); //substr返回一个以1为起始点的路径长度,实际上是去除了路径中的第一个?号字符 var原创 2016-04-11 14:55:56 · 1302 阅读 · 0 评论 -
js定时器
js有两种专用定时器函数,分别为:倒计时定时器:var timename = setTimeout("function()",delaytime);循环定时器:var timename = setInterval("function()",delaytime);说明:a.其中function()是定时器触发后将要执行的函数,可以是一个函数,也可以是多个函数,多个函数用“;”隔开。原创 2015-09-02 11:18:52 · 1468 阅读 · 0 评论 -
JSON.stringify(value, replacer, space)详解
JSON.stringify(obj)是常用的将js对象转换为json字符串的方法,但很少有人知道,该方法其实还有另外2个参数。1、方法方法定义:JSON.stringify(value, replacer, space)参数说明:value:js对象 replacer:替换对象,可以是一个方法、对象或数组,将value按照替换规则展示原创 2017-01-12 11:04:51 · 9775 阅读 · 0 评论 -
js排序总结
冒泡排序依次比较相邻的两个元素,如果后一个小于前一个,则交换,这样从头到尾一次,就将最大的放到了末尾。从头到尾再来一次,由于每进行一轮,最后的都已经是最大的了,因此后一轮需要比较次数可以比上一次少一个。虽然你还是可以让他从头到尾来比较,但是后面的比较是没有意义的无用功,为了效率,你应该对代码进行优化。图片演示如下:代码实现:function bubble转载 2017-03-27 23:40:27 · 439 阅读 · 0 评论 -
js字符串转函数
js字符串转函数对于函数型的字符串,我们想要将其转换为一个函数然后执行,有2种常用的方法。1.eval()eval()具有可以解析表达式的特性,所以可以利用这一特性将字符串解析为一个函数。 let funcStr = "function test(value){alert(value)}"; let test = eval("(false || "+funcStr+")"); t...原创 2019-07-10 15:24:22 · 27349 阅读 · 4 评论 -
js分组(group by)
对数据进行分组,类似sql的groupBy。原理:遍历数组,将符合条件的数据放在一起,最后返回一个分组后的二维数组。//分组export const groupBy = (list, fn) => { const groups = {}; list.forEach(function (o) { const group = JSON.stringify...原创 2018-10-26 17:17:18 · 33255 阅读 · 1 评论 -
js防抖和节流
js防抖和节流应用场景对于一些会频繁触发的事件,例如scroll、resize、keydown、keyup、mousemove等,如果正常绑定这些事件的话,那么可能在短时间内会多次连续的触发这些事件,如果这些事件中含有dom操作的话就会对浏览器造成相当大的负担。对于这一类可能影响性能的事件,就需要做防抖动或者节流处理。防抖动定义:在一段时间内,多次触发事件后,事件函数只...原创 2018-09-04 09:51:33 · 1002 阅读 · 0 评论 -
canvas详解(3)-模糊问题
canvas详解(3)-模糊问题1.模糊的原因canvas绘图理论上应该是清晰的,但是有些屏幕上看到的确是模糊的,究其原因有3点:css样式影响canvas绘图是基于自身的宽高设置,必须明确指定宽高,不能使用百分比。如果出现线条锯齿状原因,一般都是因为,canvas的css样式放大了原本的canvas图形导致的。例如:<canvas id="test" wid...原创 2018-08-13 10:48:17 · 2981 阅读 · 0 评论 -
canvas详解(2)-事件处理
canvas详解(2)-事件处理上一章我们讲解了canvas的基本原理应用,这一章主要讲解一下事件如何处理。 canvas详解(1)-原理canvas因为是画布的原因,实际上我们可以将它当做一张图片,所以在html中,无论这个canvas包含多少元素,多少图形,他都只有一个tag显示。那么它当中的图形事件也只能添加到canvas元素自身上了。既然所有的的事件都只能添加到canvas元素...原创 2018-08-13 10:35:08 · 4420 阅读 · 0 评论 -
canvas详解(1)-原理
canvas详解(1)-原理原理canvas本身并不具备绘画能力,它本身只是一个画布,是一个容器。绘图能力是基于html5的getContext("2d")返回的CanvasRenderingContext2D对象来完成的。const canvas = document.getElementById("payAbilityLoginTree");//获取canvas dom对象...原创 2018-08-13 10:24:51 · 8088 阅读 · 2 评论 -
js浮点数加减乘除
js浮点数加减乘除js浮点数的加减乘除存在着严重的bug,例如:在google浏览器下,0.1+0.2=0.30000000000000004;这完全不是我们想要的结果。 对于这一问题的解决方案就是重写浮点数的加减乘除方法,其原理是现将浮点数转换为整数。进行加减乘数,再除以相应的倍数,使之成为对应的浮点数结果。原理浮点数的加减乘数之所以会出现bug,跟javascript...原创 2018-08-02 10:52:08 · 2322 阅读 · 0 评论 -
数字每3位逗号隔开
最近遇到一个需求需要将数字每3位逗号隔开。 例如:1000 => 1,000故书写了如下方法://数字处理为每3位逗号隔开export const dealNumber = (num) => { if (num != 0 && num) { num = num + ""; let decimalsStr = ""; ...原创 2018-07-27 14:03:14 · 5730 阅读 · 0 评论 -
可编辑div在光标位置插入指定内容
可编辑div在光标位置插入指定内容//在光标位置插入内容insertContent(content) { if (!content) {//如果插入的内容为空则返回 return; } let sel = null; if (document.selection) {//IE9以下 sel = document.select原创 2018-02-07 15:19:41 · 6586 阅读 · 12 评论 -
js获取光标位置
js获取光标位置1.概念和原理DOM中并没有直接获取光标位置的方法,那么我们只能间接来获取光标位置。DOM支持获取光标选中的范围,我们可以以此为切入点,来获取或定位光标的位置。当选取范围起始点和结束点一样时,就是光标插入的位置。1.1 术语anchor(瞄点):选区起点。focus(焦点):选区终点。range(范围):选区范围,包含整个节点或节点的一部分。1.2 SelectionSelectio原创 2017-11-13 13:21:14 · 53555 阅读 · 17 评论 -
ESLint配置详解
ESLint配置详解解析器选项(parserOptions)"parserOptions": { "ecmaVersion": 6, //ES的版本,默认为5 "sourceType": "module", //指定源代码存在的位置,script | module,默认为script。 "ecmaFeatures": { //指原创 2017-09-13 14:18:48 · 21200 阅读 · 0 评论 -
js深拷贝对象
浅拷贝和深拷贝的区别浅拷贝:只拷贝对象的基础属性值,对属性值为对象或数组的属性则拷贝指针。 深拷贝:拷贝对象的所有属性作为一个全新的对象。拷贝前后的对象互不影响。浅拷贝var a = {name:"test",children:{name:"test1"}}//浅拷贝var b = { name:a.name, children:a.children}a.name = "字原创 2017-07-05 13:45:53 · 4339 阅读 · 0 评论 -
easyui常见问题集锦
1.tree问题:选中一个文字较长的树节点,部分文字没有选中颜色。原因:树节点的选中颜色是定义在父节点上的,而父节点的长度由包裹节点的元素决定,所以节点本身是没有颜色渲染的。解决方法:找到easyui/themes/default/tree.css。添加如下样式:.tree-node-selected .tree-title{ background: #FBEC88; co原创 2017-04-14 18:15:12 · 5597 阅读 · 0 评论 -
easyui datagridfilter插件的用法
用法包含 'datagrid-filter.js' 文件 type="text/javascript" src="datagrid-filter.js">启用过滤(Filter)var dg = $('#dg');dg.datagrid(); // create datagriddg.datagrid('enableFilter'); // enable filter原创 2016-05-31 18:56:17 · 22922 阅读 · 31 评论 -
js的trim()
trim()是一个很适用的方法,作用是去除字符串两边的空白,但是js本身并未提供这个方法,下面介绍js使用trim()的方法。1.通过原型创建字符串的trim()//去除字符串两边的空白String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g, "");}//只去除字符串左边空白原创 2016-06-12 18:39:15 · 34772 阅读 · 0 评论 -
关闭窗口触发事件(onunload和unbeforeunload)
浏览器窗口关闭可以使用window.close(),但并没有与之相对应的事件,页面加载也是使用onload事件监听。onunload和unbeforeunload事件都是在页面刷新或关闭的时候执行的。这两个事件的区别: 1.onunload事件是已经从服务器读取到了数据,在替换到当前页面之前执行的。 onbeforeunload事件是正要去服务器读取数据还没有读取原创 2016-04-01 15:46:53 · 24692 阅读 · 0 评论 -
panel的content属性
在jquery-easyui中panel组件有content属性,默认情况下,该属性为null,接收值类型为:String,表示面板主体内容。但是当content的值为null或"",面板并不会被更新而是延用上次面板加载的内容。加载dialog的方法如下:function initWindow(idSlector,title,width,height,_content,nodeType原创 2016-02-23 17:19:40 · 3710 阅读 · 0 评论 -
jquery中combobox多选模糊过滤完美版
之前尝试combobox多选的模糊过滤的时候陷入了思维误区,以为jquery自定义了特殊的过滤方法在本身的js中,而filter方法与其冲突。其实combobox的默认过滤也是基于filter实现的,只是默认的时候是以combobox的文本内容过滤。下面是一个combobox实现多选的完美示例:var diseaseList = [];$CommonUI.getComboBox("#di原创 2015-07-29 09:52:01 · 2142 阅读 · 0 评论 -
validatebox控件的多重校验
jquery-easyui的validate控件可用于控件校验。我们常使用它的required:true属性来说明这个控件是必填的。原创 2015-08-13 18:02:43 · 1112 阅读 · 0 评论