随笔分类 -  js

关于js
摘要:继前阵子写完对象真经后,这篇文章我尝试尽力的去讲透Js中的闭包。这里要感谢爱民,爱民的书写得很好,我从中获益良多。不过这次我打算换一种思路来写这篇真经,就是采用提问回答的方式,我下面先提出我要回答的问题,如果读者你都很自信的能够回答上,那么就可以考虑干别的事情去了。如果感觉自己有点把握不准就请给我一步步的寻址吧。:)我保证最后你就会豁然开朗,明白闭包的真谛。问题集:什么是函数实例?什么是函数引用?什么是闭包?闭包里有什么玩意?函数实例、函数引用和闭包有什么联系?闭包的产生的情形?闭包中的标识符的优先级是什么样的?闭包带来的可见性问题。什么是函数实例呢?其实在我们平常书写代码的过程中,写的函数就 阅读全文
posted @ 2011-03-22 17:16 allexwang 阅读(1105) 评论(0) 推荐(0)
摘要:javascript字面量 在JavaScript里面,字面量包括:字符串字面量(string literal )、数组字面量(array literal)和对象字面量(object literal),另外还有函数字面量(function literal)。 如果以前没有接触过字面量这个词,一时间真的难以理解,定义都是写的很玄乎的,读完可能会完全不知所云,于是上网百度+google了一番,关于字面量方面的资料不多,写的都比较零散。 1. 字符串字面量(String Literal)是指双引号引住的一系列字符,双引号中可以没有字符,可以只有一个字符,也可以有很多个字符(来源:互动百科)。 在编程 阅读全文
posted @ 2011-03-19 10:25 allexwang 阅读(4742) 评论(0) 推荐(0)
摘要:如果你不知道BOM,那你应该知道DOM。DOM:(Document Object Model) 文档对象模型。BOM:(Browser Object Mode) 浏览器对象模型。从上面的对比中,可以很清晰的看出,BOM与DOM的最大区别既是B(Browser)和D(Document)的区别,那Browser和Document有什么差别呢,从下面的一张图上看,DOM的根节点是document。经常编写JavaScript代码,也许你会想到window对象,为啥DOM里面没有window,这就是BOM与DOM的区别了,window是JavaScript的顶端对象之一,它是隶属于浏览器层次的,它独立 阅读全文
posted @ 2011-03-19 10:18 allexwang 阅读(4996) 评论(1) 推荐(0)
摘要:整理一些JavaScript的IE和火狐的兼容性解决方法,有更好的方法多多交流;1. document.form.item 问题 (1)现有问题: 现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在Firefox(火狐)下运行 (2)解决方法: 改用 document.formName.elements["elementName"] (3)其它 参见 22. 集合类对象问题 (1)现有问题: 现有代码中许多集合类对象取用时使用 (),IE 能接受,Firefox(火狐)不能。 (2)解决方法: 改 阅读全文
posted @ 2011-03-16 23:09 allexwang 阅读(465) 评论(0) 推荐(1)
摘要:解决IE下图片作为背景时,有鼠标操作时的抖动问题方法一、css(不推荐)复制内容到剪贴板代码:1html {2filter: expression(document.execCommand("BackgroundImageCache", false, true));3}方法二、js复制内容到剪贴板代码:try{document.execCommand('BackgroundImageCache',false,true);}catch(e) {} 阅读全文
posted @ 2011-03-16 10:27 allexwang 阅读(211) 评论(0) 推荐(0)
摘要:以前最短的IE判定借助于IE不支持垂直制表符的特性搞出来的。Code:var ie = !+"\v1";仅仅需要7bytes!参见这篇文章,《32 bytes, ehr ... 9, ehr ... 7!!! to know if your browser is IE》,讲述外国人是如何把IE的判定从32 bytes一步步缩简成7 bytes!的故事但这纪录今年1月8日被一个俄国人打破了,现在只要6 bytes!它利用了IE与标准浏览器在处理数组的toString方法的差异做成的。对于标准游览器,如果数组里面最后一个字符为逗号,JS引擎会自动剔除它。Code:var ie 阅读全文
posted @ 2011-03-13 08:45 allexwang 阅读(308) 评论(3) 推荐(0)
摘要:IE6下链接伪类(:hover)CSS背景图片有闪动BUG,主要原因ie会再一次请求这张图片,或者说图片没被缓存。例如:CSS代码a:hover{background:url(imagepath)}常用的解决方案:在页面底部添加以下IE6专用代码,让IE6缓存CSS背景图片至本地,这样a:hover时IE6就不会再重新向服务器请求加载背景图片了。XML/HTML代码!–[ifIE6]scri... 阅读全文
posted @ 2011-03-11 07:51 allexwang 阅读(516) 评论(0) 推荐(0)
摘要:jQuery中常用getJSON来调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数。原型如下:jQuery.getJSON( url, [data], [callback] ) 跨域加载JSON数据。url: 发送请求的地址data : (可选) 待发送key/value参数callback: (可选) 载入成功时的回调函数主要用于客户端获取服务器JSON数据。简单示例:服务器脚本,返回JSON数据:$.getJSON.php$arr=array("name"=>"zhangsan", "age" 阅读全文
posted @ 2011-03-08 10:11 allexwang 阅读(738) 评论(0) 推荐(0)
摘要:最近作浏览器兼容性方面的工作,发现此篇文章,太好了,转帖收藏了Javascript的IE和Firefox兼容性汇编作者:yaosansi日期:2006-11-141. document.form.item 问题 (1)现有问题: 现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在 MF 下运行 (2)解决方法: 改用 document.formName.elements["elementName"] (3)其它 参见 22. 集合类对象问题 (1)现有问题: 现有代码中许多集合类对象取用时使用 (),IE 能接受,MF 不能。 (2)解 阅读全文
posted @ 2011-01-27 23:33 allexwang 阅读(369) 评论(0) 推荐(0)
摘要:今天写了一个跳转,使用了一个点击按钮跳转的js,语句很简单:inputtype="button"value="添加"onclick="location.href('http://www.baidu.com');"/结果发现在IE下是可以用的而firefox,谷歌下面,则不能使用了。在location前面加了一个window,即改为:onclick="window.location.href('http://www.baidu.com');"发现仍然不行。于是去群里发问,找到一个答案:使用window.location="url"; 代替 location.href('url');"于是将代 阅读全文
posted @ 2011-01-27 23:28 allexwang 阅读(1003) 评论(1) 推荐(0)
摘要:首先,我们要先了解一下类的概念,JavaScript 本身是一种面向对象的语言,它所涉及的元素根据其属性的不同都依附于某一个特定的类。我们所常见的类包括:数组变量(Array)、逻辑变量(Boolean)、日期变量(Date)、结构变量(Function)、数值变量(Number)、对象变量(Object)、字符串变量(String) 等,而相关的类的方法,也是程序员经常用到的(在这里要区分一下类的注意和属性发方法),例如数组的push方法、日期的get系列方法、字符串的split方法等等,  但是在实际的编程过程中不知道有没有感觉到现有方法的不足?prototype 方法应运而生!下面,将通 阅读全文
posted @ 2011-01-09 09:34 allexwang 阅读(326) 评论(0) 推荐(0)
摘要:写任何编程代码,不同的开发者都会有不同的见解。但参考一下总是好的,下面是来自Javascript Toolbox发布的14条最佳JS代码编写技巧,Sofish翻译(1,2)。1. 总是使用 ‘var’在javascript中,变量不是全局范围的就是函数范围的,使用”var”关键词将是保持变量简洁明了的关键。当声明一个或者是全局或者是函数级(function-level)的变量,需总是前置”var”关键词,下面的例子将强调不这样做潜在的问题。不使用 Var 造成的问题因为变量函数中变量 i 并没有使用 var 使其成为函数级的变量,在这个例子中它引用了全局变量。总是使用 var 来声明全局变量是 阅读全文
posted @ 2011-01-09 09:25 allexwang 阅读(514) 评论(1) 推荐(1)
摘要:JavaScript有一种object数据类型,但是这种对象不同于c#或vb中的对象,在c#中,我们通过类创建一个对象,一个类相当于创建对象的模板,定义了对象的属性和方法,这些对象和方法将永远固定,我们不能在运行时不能增加对象的属性和方法。 在JavaScript没有类的定义,创建对象时没有固定的模板,可以动态的创建新的属性和方法,在动态创建新属性的时候,我们能做的就是为这个属性创建新的值,下面一个例子就是创建一个对象并增加x,y两个属性。varProgrammer=newObject();Programmer.name="Young";Programmer.age=25;alert(Prog 阅读全文
posted @ 2011-01-08 22:55 allexwang 阅读(329) 评论(0) 推荐(0)
摘要:每天一对象,今天我们也来new一个。没有系统的学过JS,没有特别的写过一个比较出色的类库,没有运用过一个很强的类库,prototype.js在进行着,慢慢的前进相信不久的将来就可以应用prototype.js来开发自己的应用程序了。不过在学脚本prototype.js的过程中发现有些方法我们很少用到,但是有些方法好像很经典,脚本库在不断的加大,眼前一片...继续我们JS入门,今天学习一下Array数组。 首先我们来看看它的定义: var arrayObj=newArray() var arrayObj=newArray([size]) var arrayObj=newArray([elemen 阅读全文
posted @ 2011-01-08 12:44 allexwang 阅读(185) 评论(0) 推荐(0)
摘要:JS的正则表达式 //校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } //校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串 Java代码 function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/; if (!patrn.exec(s)) return false return true } 阅读全文
posted @ 2011-01-06 23:01 allexwang 阅读(238) 评论(0) 推荐(0)
摘要:jQuery为开发插件提拱了两个方法,分别是:jQuery.fn.extend(object);jQuery.extend(object);jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法。jQuery.fn.extend(object);给jQuery对象添加方法。fn 是什么东西呢。查看jQuery代码,就不难发现。jQuery.fn = jQuery.prototype = {   init: function( selector, context ) {//....    //......};原来 jQuery.fn = jQuery.proto 阅读全文
posted @ 2011-01-06 22:52 allexwang 阅读(215) 评论(0) 推荐(0)
摘要:网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offsetWidth (包括边线的宽);网页可见区域高: document.body.offsetHeight (包括边线的宽);网页正文全文宽: document.body.scrollWidth;网页正文全文高: document.body.scrollHeight;网页被卷去的高: document.body.scrollTop;网页被卷去的左: document.body.scrollLeft;网页 阅读全文
posted @ 2011-01-06 22:50 allexwang 阅读(242) 评论(0) 推荐(0)