![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
xuexiaodong2009
主要从事C#编程,精通SQL,JS,jquery等技术,目前主要从事内部办公,微信企业号方面的应用
展开
-
JS异步循环集合
JS异步循环集合原创 2023-01-12 18:00:53 · 144 阅读 · 0 评论 -
前端性能优化:创建对象二
既然使用var obj = { name1: name1, name2: name2, name3: name3 ,name4:name1+name2}; 方式是最快的,那么使用原型的方式会变快吗?测试代码:var length=30000;/*构造函数创建对象*/function mYObj(name1,name2,name3){ this.name1=name1; this.nam原创 2016-07-05 13:53:49 · 1263 阅读 · 0 评论 -
前端性能优化:创建对象
有的资料上说不同的创建对象的方式会有一定的性能差别,var obj =new Object();这种方式最慢,var obj = { name1: name1, name2: name2, name3: name3 ,name4:name1+name2}; 这种方式最快。但发展了这么多年,有变化吗?测试代码如下:var length=30000;/*new 的方式创建*/function Cr原创 2016-07-05 13:52:28 · 1174 阅读 · 0 评论 -
前端性能优化:循环内部优化
代码优化,首先应该优化循环,但循环处理展开,判断条件的优化,还有其他方式吗?其实在操作系统中介绍了系统会优化的一个方法,就是循环不变量外提。其实在for循环中把长度定义在循环外就是循环不变量外提。1循环不变量外提 var lengtharr = t.length; for (var i = 0; i < lengtharr; i++) { total +原创 2016-07-03 10:21:47 · 3504 阅读 · 0 评论 -
前端性能优化:条件判断优化
条件比较少时使用if,比较多是使用switch,超过十个时使用数组判断。例如如下的if判断: if (value==0) { do0(); } else if (value == 1) { do1(); } else if (value == 2) {原创 2016-07-03 10:16:33 · 3851 阅读 · 0 评论 -
前端性能优化:for in循环的优化
for in循环非常慢,但有时候却不能不使用,那有没有方法改进呢?for in循环之所以慢,就是因为需要不停的遍历原型链,如果知道能够减少原型链的遍历就可以改进。改进方法,就是需要遍历的属性明确列出来:代码: function createArr() { var t = []; for (var i = 0; i < 1000; i++) {原创 2016-07-03 10:15:45 · 4348 阅读 · 0 评论 -
前端性能优化:循环优化二,循环展开
这种方式就是把循环展开,据说可以提高性能,但测试效果不明显,在谷歌50中展开反倒变慢了,IE10这种变快了。看来实际使用中中还是需要测试测试代码: function doProcess(value1, value2) { return value1 + value2; } function createArr() { var t = [];原创 2016-07-01 17:19:58 · 3062 阅读 · 0 评论 -
微信企业号开发:微信考勤百度地图定位,错误修正二
在之前的博客中微信企业号开发:微信考勤百度地图定位,错误修正介绍了一种修正百度地图错误的方法,就是使用高德地图修正。但经过近一年,近两千的的使用发现,在百度地图出现定位错误时,通过HTML5获取的经纬度都是空,也就是获取不到经纬度,因此可以采用HTML5获取的经纬度来纠正百度地图的错误。如果HTML5获取的经纬度为空,百度地图获取的位置肯定是错误的。但这种情况在测试时,很少出现,但如果大量使用,出原创 2016-04-17 14:45:46 · 9076 阅读 · 4 评论 -
JSON数据的处理中的特殊字符
JSON现在是很常见的处理数据的方式了。但由于自己使用的是反射获取数据,必须自己处理特殊字符,但总是发现有一些看不见的字符在前台var obj = jQuery.parseJSON(msg);会转换失败。 例如如下在Vs中可以看到只有两个字符 可实际上却有三个字符,使用notepad++打开一直不明白这些字符是如何进入数据库的,但进入了,就必须处理,否则在前台就原创 2014-08-04 14:31:41 · 5896 阅读 · 0 评论 -
js变量作用域--变量提升
js的变量和其他语言的变量作用域,有很多相同的地方,但也有很多不相同的地方。尤其是变量提升这个概念。之前还真没听说过这个概念。 先看具体的例子: function test2(){ alert(t); var t="123" alert(t); }按照之前的理解,第一个alert就应该出错。可是在谷歌浏览器已测试,没有错误。第一次弹出来的是undefined!!第二原创 2015-05-27 15:02:05 · 1895 阅读 · 1 评论 -
ajax上传文件的原理与实现
ajax已经很普遍了,但使用 ajax上传文件自己却一直都没有涉及,我只知道挺复杂的,上传文件不同于上传一般的表单数据,必须特殊处理,知道一般ajax使用上传都是应用一个虚拟的iframe,但由于项目需要,在网上找了找,没想到找到了两个支持ajax上传文件的jquery插件,jquery.uploadify.js和dropzone.min.js两个都可以实现ajax上传文件,效果也不错。原创 2015-05-07 10:11:52 · 8259 阅读 · 1 评论 -
js数据计算中的一个bug,9.44+4.8计算结果竟然是14.239999999999998
在使用js计算数据时,遇到一个很奇怪的问题,9.44+4.8计算结果竟然是14.239999999999998这个??很夸张。于是享有经验的同事请教,这是怎么回事,原来是js的bug,在减法时,经常出现,加法时出现的少,需要修正,修正方式有两种,一种是转化为整数,另一种是使用toFixed() 使用整数的方法: alert( (9.44*100+4.8*100)/100.0)使用原创 2015-03-04 16:32:18 · 2285 阅读 · 1 评论 -
jquery中的live和on方法
jQuery 1.10之前的版本有一个.live()方法,这个方法和bind的重要区别就是.live()方法可以对以后再添加进来的有效例如如下的HTML: Hello 使用bind方法:$(document).ready(function () { $('span').bind('click',function() { alert(原创 2014-12-15 10:38:07 · 3429 阅读 · 0 评论 -
js操作iframe兼容各种浏览器
在做项目时,遇到了操作iframe的相关问题。业务很简单,其实就是在操作iframe内部某个窗体时,调用父窗体的一个函数。于是就写了两个很简单的htm页面用来测试,使用网上流行的方法在谷歌浏览器中始终报错,不能通过。原创 2013-07-22 14:12:46 · 8357 阅读 · 2 评论 -
如何清除浏览器缓存?
web开发中经常遇到一些很奇怪的问题,例如,发现了问题,改了脚本,结果发布后,问题依然存在,但在服务器上一看,发布的脚本确实改了!!最后才发现,是浏览器缓存在作怪!!现在讨论几种清除浏览器缓存的方法。一种原理是HTTP Header 参数Cache-Control来清空缓存,另一种是利用URL上添加查询字符串来欺骗浏览器强制从服务端读取数据,避免缓存。原创 2014-09-17 14:18:02 · 3663 阅读 · 0 评论 -
jQuery如何判断和设定单选多选是否选中??
如何判断HTML中的单选多选是否选中呢? 这是web编程中最常用的判断,可是前段时间,却遇到了一个很奇怪的问题。我想很多人会这样判断 if($("#weixuanzhong").attr("checked")=="checked")//选中时 { }但如果是如下的HTML代码:却发现上边的判断始终都是真,不管多选框是不是选中。于是我奇怪,以前自己都是这么原创 2014-09-11 08:46:13 · 3813 阅读 · 0 评论 -
如何改写js中的eval函数?
js中有一个函数eval可以一段文本改为js代码,原创 2014-09-22 10:13:20 · 3688 阅读 · 0 评论 -
前端性能优化:字符串的连接操作改进
在web开发中,避免不了字符串连接的操作,但字符串的连接操作性能高吗?之前有不少文章说使用加号性能地下,建议使用数组的join操作。测试代码:var length = 300000; /*数组的 join*/ function Test1() { var date1 = new Date().getTime(); var t = [];原创 2016-07-05 13:56:41 · 2856 阅读 · 0 评论 -
前端性能优化:数组操作的优化
数组的定义有好几种方式,据说使用new方式是最慢的,但是不是呢?测试代码: var length = 300000; function Test1() { var date1 = new Date().getTime(); for (var i = 0; i < length; i++) { var t = [];原创 2016-07-05 13:59:03 · 1900 阅读 · 0 评论 -
easyui动态修改required
经常使用easyui,对于基本的使用还算了解,经常有这样的需要,需要动态的修改required,也就是在某些情况下required是true,有些情况下required是false,之前使用的方法主要有两种:一种是构造函数方法,重新构造一个 $("#" +id).combobox({required:false}); $("#" +id).combobox({required:tru...原创 2019-01-30 16:15:44 · 7462 阅读 · 2 评论 -
使用EasyUI编写多选下拉,单选下拉
使用效果HTML <div class="DropRadio"> <select id="cc" style="width:150px"></select> <div id="sp"> <div style="color:#99BBE8;b原创 2018-07-03 15:57:24 · 1446 阅读 · 0 评论 -
js字符串转日期,日期转字符串
//把字符串日期转为日期function convertStrTodate(datetimeStr) { var mydateint = Date.parse(datetimeStr); if (!isNaN(mydateint)) { var mydate = new Date(mydateint); return mydate; }原创 2017-12-04 17:00:23 · 15721 阅读 · 1 评论 -
js子窗体调用父窗体函数的问题
在很早之前写过一篇关于关闭子窗体关闭后,调用父窗体的问题,js操作iframe兼容各种浏览器在使用了很多次发现了一些问题。因此想到了设计了一些改进的方法。其实可以在调用可以使用查询字符串巧妙的解决这个问题。例如:可以在父窗体FileAuthorityList.aspx这个页面中打开子窗体AuthorityDetail.aspx,并传递参数例如 var url = "AuthorityDetail.原创 2017-12-04 13:50:24 · 1123 阅读 · 0 评论 -
使用闭包对setTimeout进行简单封装
在写js脚本时,经常会用到一些拼写函数的情况,例如调用setTimeout var msgalert="test"; function TestAlert(msg) { alert(msg) } $(document).ready(function () { $("#btnCancel").click(function (e) {原创 2013-07-10 14:39:29 · 2963 阅读 · 0 评论 -
前端性能优化:那些操作会引起DOM操作重排版?
添加或删除可见的 DOM 元素 元素位置改变 元素尺寸改变(因为边距,填充,边框宽度,宽度,高度等属性改变) 内容改变,例如,文本改变或图片被另一个不同尺寸的所替代 浏览器窗口改变尺寸 根据改变的性质,渲染树上或大或小的一部分需要重新计算。某些改变可导致重排版整个页面:例如,当一个滚动条出现时。原创 2016-08-03 09:45:12 · 2207 阅读 · 0 评论 -
前端性能优化:哪些DOM操作查询会引起刷新渲染树改变?
因为计算量与每次重排版有关,大多数浏览器通过队列化修改和批量显示优化重排版过程。然而,你可能(经常不由自主地)强迫队列刷新并要求所有计划改变的部分立刻应用。获取布局信息的操作将导致刷新队列动作,这意味着使用了下面这些方法: • offsetTop, offsetLeft, offsetWidth, offsetHeight • scrollTop, scrollLeft, scrollWidth原创 2016-08-03 09:44:46 · 3158 阅读 · 0 评论 -
前端性能优化:CSS 选择器性能
CSS选择器效率:CSS选择器具有高效的继承性,引用Steve Souders的话, CSS选择器效率从高到低的排序如下:ID选择器 比如#header类选择器 比如.promo元素选择器 比如 div兄弟选择器 比如 h2 + p子选择器 比如 li > ul后代选择器 比如 ul a 7. 通用选择器 比如 *属性选择器 比如 type = “text”伪类/伪元素选择器 比如 a:hover转载 2016-08-03 09:43:51 · 3449 阅读 · 0 评论 -
前端性能优化:重写自己,减少判断
重写自己如何减少判断?其实我也是学习别人的代码,才明白的。具体代码: //兼容的绑定事件方法 function addHandler(target, eventType, handler) { //重写自己 if (target.addEventListener) { //DOM2 Events ad原创 2016-08-01 09:27:33 · 1949 阅读 · 1 评论 -
前端性能优化:DOM操作标签对性能的影响
给DOM添加相同的数量的字符串,到底什么会相应性能呢?测试代码: var length = 300000; function Test1() { var t = [length]; for (var i = 0; i < length; i++) { t.push("" + i.toString()); }原创 2016-08-01 09:26:31 · 2669 阅读 · 0 评论 -
前端性能优化:DOM操作性能优化建议
其实在web开发中,单纯因为js导致性能问题的很少,主要都是因为DOM操作引起的。1查找元素的优化2改变DOM,包括添加,修改,删除DOM3改变DOM的样式类等1查找元素的优化 因为ID是唯一的,也有原始的方法,因此使用ID查找元素是最快的,其次的是根据类和类型查找元素,通过属性查找元素是最慢的,因此应该尽可能的通过ID或者类来查找元素,避免通过类来查找元素。2改变DOM,包括添加,修改,删除D原创 2016-07-07 11:45:56 · 6993 阅读 · 0 评论 -
前端性能优化:循环优化
近段时间在处理前端性能的优化,而优化的重点自然是循环的处理,循环能优化吗?可以肯定的是可以优化。核心是数组长度外提,去掉必要的判断。另外避免使用for in的循环,更不要使用封装过的循环。使用基本的for循环性能是for in的的好多倍,谷歌里边相差10几倍,IE10里边相差三倍,对于复杂的数据类型的就偏差更大了注意把数组的长度定位的循环外边,避免反复读取测试代码: var length = 30原创 2016-07-01 16:02:33 · 4444 阅读 · 0 评论 -
前端性能优化:jquery的each为什么比原生的for循环慢很多?
其实查看jQuery的源代码,发现each的代码很简单,但为什么性能和原生的for循环相差几十倍呢?jQuery的each的核心代码 for (; i < length; i++) { value = callback.call(obj[i], i, obj[i]); if (value === false) {原创 2016-07-05 14:15:51 · 7589 阅读 · 0 评论 -
前端性能优化:jquery性能优化
1不使用each,2尽量使用ID,类,类型选择器,避免使用属性选择器3选择器添加第二个参数4翻译 2016-07-05 14:14:21 · 3598 阅读 · 0 评论 -
前端性能优化:JSON数据的优化
JSON数据的可以优化吗?肯定可以,之前都是使用XML,但之后用XML越来越少了,就是因为XML包含的冗余信息太多了。那么JSON数据有没有冗余呢?肯定有,名称就是重复的!!例如如下的JSON数据:{"total":28,"rows":[ {"productid":"FI-SW-01","productname":"Koi","unitcost":10.00,"status":"P","list原创 2016-07-05 14:00:23 · 4432 阅读 · 0 评论 -
前端性能优化:数组操作的优化二
数据通过中括号的方式定义,定义时加不加长度,这两种方式性能有区别吗?填充元素使用下标的方式和push有性能差别吗?测试代码: var length = 30000; function Test1() { var date1 = new Date().getTime(); var t = [length]; for (var i = 0; i原创 2016-07-05 13:59:34 · 1800 阅读 · 0 评论 -
jquery-easyui必填项隐藏问题的处理方案
使用jquery-easyui制作用户界面,必填项很简单,需要需要简单的一个简单的属性data-options="required:true" 就可以把一个输入变成必输项。但实际问题却是,在某些情况下,即使隐藏了必输项,却依然没办法提交,提交时弹出有必输项没有输入!! 使用jquery-easyui的方法就是如果隐藏了,就把必输项标志去掉。也就是使用类似如下的代码。 $('原创 2013-11-25 14:10:22 · 5412 阅读 · 0 评论 -
js面向对象编程,定义接口
// Constructor.var Interface = function(name, methods) { if(arguments.length != 2) { throw new Error("Interface constructor called with " + arguments.length + "arguments, but e原创 2014-03-12 15:17:29 · 2638 阅读 · 1 评论 -
js面向对象编程:this到底代表什么?
在js中this的用法很让人迷惑,有些像Java或者C#中的this,但又不完全一样。按照流行的说法this总是指向调用方法的对象。 1、纯粹函数调用。 function ListCommon2(x) { this.x=x; alert("this 是 ListCommon2"+(this instanceof ListCommon2)); alert原创 2014-06-12 09:01:59 · 2743 阅读 · 0 评论 -
js综合应用:表格的四则运算
在做调查问卷的过程中,遇到一个表格的统计问题,算是需要些js方面的综合知识,所以记录下来。在上次完成了基本的求和的基础上,添加了基本的加减乘除四则运算。基本需求简化后如下:对应的htm了为: $(document).ready(function () { })原创 2013-09-13 08:53:55 · 2402 阅读 · 0 评论 -
js格式化货币数据
function formatCurrency(num) { var sign=""; if(isNaN(num)) { num = 0; } if(num<0) { sign="-"; } var strNum=num+""; var arr1 = strNum.split("."); var hasPoint=false;//是否有小数部分原创 2013-09-04 16:14:39 · 1898 阅读 · 0 评论