随笔分类 -  JavaScript

摘要:现象IE这货果然与众不同,当光标焦点在input时,点击同页面内其他区域的scrollbar,会导致焦点移动到body,从而触发绑定在input上的blur事件,如果input中的值与之前不同,甚至还会触发change事件...Chrome曾经也有类似的问题,但在最新版中已经修正了,而Firefox则完全没有这样的问题。影响这个问题看起来微不足道,实际上影响还是非常大的,主要表现在下面2个方面多数的suggest控件会出错suggest往往是通过input(输入部分)和div(下拉框部分)组成。有时,下拉框内容过多,用户需要移动滚动条才能看全选项,但因为点击滚动条会... 阅读全文
posted @ 2013-06-18 00:14 BetaRabbit 阅读(1213) 评论(0) 推荐(0)
摘要:_.each遍历集合,对集合中的每个元素执行回调。APILo-Dash_.forEach(collection [, callback=identity, thisArg])AliaseseachArgumentscollection (Array|Object|String): 要遍历的集合[callback=identity] (Function): 每次迭代中调用的函数[thisArg] (任意): 绑定到callback的thiscallback接受三个参数: (value, index|key, collection)Returns(Array, Obje... 阅读全文
posted @ 2013-05-31 00:43 BetaRabbit 阅读(1067) 评论(0) 推荐(0)
摘要:Javascript主要有以下几种位操作符: AND ( & ) OR ( | ) XOR ( ^ ) NOT ( ~ ) LEFT SHIFT ( << ) RIGHT SHIFT ( >> ) ZERO-FILL RIGHT SHIFT ( >>> )一般来说,我们在Javascript中很少能用到这些位操作符,但在某些特殊情况下,这些简单的操作符却能抵得上好几行代码(如果不在乎可读性的话)。 -(n+1) 对一个数进行~运算,等同于-(n+1)~1 === -2 // => trueNote: 这只能应用于整数部分,~1.1 === 阅读全文
posted @ 2013-04-29 23:47 BetaRabbit 阅读(493) 评论(0) 推荐(0)
摘要:开发中我们经常需要将一个String和多个String值进行比较。直觉反应是使用||符号连接多个===完成,比如: if (string === 'banana' || string === 'pineapple') { fruitColor = 'yellow';}这样能够很好的完成需求,但总觉得有点笨,并且对扩展不友好,当我们的水果种类变多时:if (string === 'banana' || string === 'pineapple' || string === 'mongo' || st 阅读全文
posted @ 2013-04-20 22:34 BetaRabbit 阅读(1152) 评论(6) 推荐(0)
摘要:Throttle 无视一定时间内所有的调用,适合在发生频度比较高的,处理比较重的时候使用。 var throttle = function (func, threshold, alt) { var last = Date.now(); threshold = threshold || 100; return function () { var now = Dat... 阅读全文
posted @ 2013-03-19 00:23 BetaRabbit 阅读(373) 评论(2) 推荐(0)
摘要:今天在使用innerText时遇到一个兼容性问题,FireFox不支持innerText方法,查了下MDN,发现FireFox下有个类似的方法,叫textContent,它和IE的innerText类似, 都是用来获取(设置)元素中text的方法。 语法 设置 element.textContent = “text”; 获取 var text = element.textContent; Note: textContent和innerText类似,也会同时获取子元素的text content,比如 ... 阅读全文
posted @ 2013-02-26 20:11 BetaRabbit 阅读(1353) 评论(4) 推荐(1)
摘要:RequireJS是一个JavaScript文件和模块加载器。除了可以在浏览器中使用外,还可以用Node或Rhino等Server端环境。 最新版可以在这里下载。 基本用法 假设你的工程目录结构如下: project index.html js lib jquery.js app sub_app.js ... 阅读全文
posted @ 2012-11-19 16:38 BetaRabbit 阅读(209) 评论(0) 推荐(0)
摘要:网上看到下面这段代码,很有意思。String.prototype.cut = function (len) { return this.length > len ? this.substring(0, len) + '...' : this;};var obj = ["Superman", "Batman", "Iron Man"];console.log(typeof obj[1].cut(6));console.log(obj[1].cut(6));这段代码很简单,判断字符串的长度,如果大于给定长度(L)输出 阅读全文
posted @ 2012-11-04 00:26 BetaRabbit 阅读(245) 评论(0) 推荐(0)
摘要:今天在工作中发现一个诡异的问题,理论上应该是没有元素的数组,长度居然是1。查了半天,原来是Javascript中的split和其他语言中不同,即对空string使用split会返回含有一个空string的数组,而不是一个空数组。 var str = "", arr = str.split("_"); console.log(arr.length === 1); //trueconsole.log(arr === []); //falseconsole.log(arr === [""]); //true参考MDN,也有类似的说明。Not 阅读全文
posted @ 2012-08-02 02:57 BetaRabbit 阅读(902) 评论(0) 推荐(0)
摘要:原文链接:http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting 你知道下面的JavaScript代码执行后会alert出什么值吗? 1: var foo = 1; 2: function bar() { 3: if (!foo) { 4: var foo = 10; 5: } 6: alert(foo); 7: } 8: bar();如果答案是"10"令你感到惊讶的话,那么下面这个会让你更加困惑: 1: var a =... 阅读全文
posted @ 2012-01-28 04:29 BetaRabbit 阅读(3079) 评论(8) 推荐(4)
摘要:JavaScript有自己的一套this机制,在不同情况下,this的指向也不尽相同。全局范围 1 console.log(this); //全局变量全局范围使用this指向的是全局变量,浏览器环境下就是window。注:ECMAScript5的strict模式不存在全局变量,这里的this是undefined。函数调用中 1 function foo() {3 console.log(this);5 }6 9 foo(); //全局变量函数调用中的this也指向全局变量。注:ECMAScript5的strict模式不存在全局变量,这里的this是und... 阅读全文
posted @ 2011-09-08 14:02 BetaRabbit 阅读(460) 评论(2) 推荐(1)