
javascript
文章平均质量分 58
IcyFox
是非成败转头空,青山依旧在,几度夕阳红~
展开
-
nodeName,nodeValue和node
<br />nodeName和nodeValue都是根据节点的类型而定义的,其中nodeName是指节点的名字,nodeValue是之节点的值。一般nodeName和nodeValue在下列三种节点类型下会返回不同的值<br /> <br />1. 元素节点,即Element<br />比如<div id=”myDiv”></div><br />这时,该节点的nodeName返回节点的标签名,即div,而nodeValue为空.<br /> <br />2.属性节点,即Attr,代表一对特姓名和特性值<b原创 2010-10-31 21:01:00 · 1084 阅读 · 0 评论 -
冒泡排序,快速排序,插入排序(JS版)
//冒泡排序function sortBubble(array){ var len=array.length,i,j,tmp; for(i=len-1;i>=1;i--){ for(j=0;jarray[j+1]){ d=array[j+1]; array[j+1]=array[j]; array[j]=d; } } } return array;}//快速排序function sortQuick(array){原创 2011-04-29 18:05:00 · 8938 阅读 · 1 评论 -
动态加载JS过程中如何判断JS加载完成
<br />在正常的加载过程中,js文件的加载是同步的,也就是说在js加载的过程中,浏览器会阻塞接下来的内容的解析。这时候,动态加载便显得尤为重要了,由于它是异步加载,因此,它可以在后台自动下载,并不会妨碍其它内容的正常解析,由此,便可以提高页面首次加载的速度。<br />那么,既然js是异步加载,我们又该如何判断它是否加载完成呢?<br /> <br />在IE或一些基于IE内核的浏览器中(如Maxthon),它是通过script节点的readystatechange方法来判断的,而其它的一些浏览器中,往原创 2011-04-30 00:27:00 · 23008 阅读 · 0 评论 -
一个经典的继承工具函数
<br />继承的方式有很多,下面介绍的是一个比较经典的继承方式<br /> <br />/***@param {Function} childfun 子类*@param {Function} superfun 父类*/function extend(childfun,superfun){ var sbp=childfun.prototype;//暂存子类原型 childfun.prototype=new superfun();//继承父类(the most import原创 2011-04-29 11:14:00 · 878 阅读 · 0 评论 -
语法作用域与词法作用域(转)
<br />varclassA= function(){ this.prop1= 1;}classA.prototype.func1= function(){ var that= this, var1= 2; function a(){ return function(){ alert(var1); alert(this.prop1); }.apply(that); }; a(原创 2011-05-03 15:06:00 · 3190 阅读 · 0 评论 -
javascript:对象类型检查
我们知道,javascript是一种弱类型的语言,并且,javascript中的一切实质上都是对象。那么,在javascript中如何进行对象的类型检查将是一个非常重要的话题。这里,我将介绍两种在js中经常使用的用于类型检测的方法。 第一种方法是使用"typeof"操作符,这种方法可能大家都知道。使用它来进行类型检测的结果是下列六个字符串中的其中一个:"number","boolean原创 2011-06-26 18:18:00 · 1707 阅读 · 0 评论 -
理解 JavaScript 闭包
原文地址:Javascript Closures翻译地址:理解 JavaScript 闭包 By 为之漫笔 要成为高级 JavaScript 程序员,就必须理解闭包。本文结合 ECMA 262 规范详解了闭包的内部工作机制,让 JavaScript 编程人员对闭包的理解从“嵌套的函数”深入到“标识符解析、执行环境和作用域链”等等 JavaScript 对象背后的运行机制当中转载 2011-06-26 20:12:00 · 1006 阅读 · 0 评论 -
JS数组的赋值
var test=[1,2,3,4,5,6,7];var arr=test;arr.splice(2,1);alert(test);//1,2,4,5,6,7JS数组实质上是对象。因此,上面的源代码最后打印出的是1,2,3,4,5,6。这是因为将test赋值给arr实原创 2011-09-16 15:12:55 · 9417 阅读 · 0 评论 -
js对象类型检查(续)
上一篇文章,我讲到了使用typeof和constructor两种方法来进行对象类型的判断。其中,typeof可以说是js设计上的一个缺陷,因为几乎不可能从它那里得到想要的结果,它唯一的使用场景就是判断一个变量是否已经定义,如typeof para==='undefined',因此原创 2011-10-15 21:38:08 · 2493 阅读 · 0 评论 -
JS判断浏览器类型,获得浏览器版本号
在WEB开发中,浏览器兼容问题往往弄得我们焦头烂额。这篇文章主要是通过使用JS封装一个方法来获得当前客户端的浏览器类型和浏览器版本号。大家都知道,我们往往是通过分析浏览器的uerAgent来判断,可是uerAgent属性又臭又长,我们又该如何从中抽丝剥茧,获得每个浏览器的所独有的特性呢,首先,我们来分析下各个浏览器的uerAgent字符串:(并不会写完全,只是写该字符串中比较重要的一部分)IE原创 2011-05-05 15:42:00 · 11754 阅读 · 1 评论 -
onchange事件在IE和FF下的表现及解决方案
在最近做的一个项目中,有这么一个功能点:页面上有一个checkbox,当用户选择或者取消选择该checkbox时会向后台发一个jsonp请求。当时的实现是为这个checkbox添加一个onchange事件,但结果却出人意料,为此,我深入的研究了一下,发现了onchange事件在IE和FF下的表现存在着以下问题。问题①:在FF下,当改变checkbox的选中状态时,会马上触发onchange事件原创 2012-08-20 19:39:01 · 8379 阅读 · 1 评论 -
自己写的一个选择器,支持单选,组选,子元素选,求优化~~
<br /> //实现查重 function checkRepeat(element,elements){ for(var i=0;i<elements.length;i++){ if(element==elements[i]){ return false; } } return true; } //选择器主题 function $(){ var elements=new Array(); var regi原创 2011-04-28 13:49:00 · 882 阅读 · 0 评论 -
JS的跨域访问
最近在网络上看了很多JS跨域访问的解决方案。。比较了一下,大致上有这么两种:第一个是使用内嵌的iframe,由于iframe能够访问外部域,因此,便实现了一种简单的跨域访问。但是这里存在着一个问题,那就ParentWindow和childWindow之间不能直接进行交互,因为在跨域的情况下,由于安全性的原因,这种交互是被拒绝的。。这时候,人们便想到了使用anchor hash来实现。因为改变一个网页的anchor hash并不会使网页重新加载,,从而使网页的状态得到了保持。而网页本身可以通过一个计时器侦听自原创 2011-04-22 17:09:00 · 2711 阅读 · 1 评论 -
IE事件模型中的fireEvent
对于DOM对象来说,事件处理句柄是普通的函数,我们可以像调用普通函数那样调用它们。例如:btn然而,在IE模型中,提供了一种fireEvent方式来模拟事件触发。这是一种在特定情况下很有用的方法,下面是一个例子原创 2010-10-30 19:28:00 · 1158 阅读 · 0 评论 -
ajax做的一个二级联动菜单
<br /> IE中,select下拉列表框无法用innerHTML渲染。。所以无法使用oselect.innerHTML=<option>text</option>,为解决这个问题,我在select下拉框为加上一个层把它包裹住,然后直接设置div的innerHTML,下面是代码<br /> <mce:script type="text/javascript"><!-- var xmlhttp; function createXMLHTTPRequest()原创 2010-10-31 12:51:00 · 681 阅读 · 0 评论 -
JS中继承机制的实现
<br />JS中实现实现继承的机制不止一种,这是因为JS中的继承机制并不是明确规定的,而是通过模仿实现的。这意味着所有的继承细节并非完全由解释程序处理。作为开发者,我们有权决定最适用的继承方式。<br /> <br />1.构造继承法。<br />构造继承法是使用了FUNCTION对象的call和apply方法。call的第一个参数用作this的对象,其余的参数是传给函数的参数。示例代码如下<br />function classA(sColor)<br />{<br /> this.color=sC原创 2010-11-02 10:50:00 · 1102 阅读 · 0 评论 -
JS中的构造函数解析
<br />在JavaScript中,任何合法的函数都可以作为对象的构造函数,这既包括系统内置函数,也包括用户自己定义的函数。一旦函数被作为构造函数执行,它内部的this属性将引用函数本身。<br />通常来说,构造函数没有返回值,它们只是初始化由this指针传递进来的对象,并且什么也不返回。如果一个函数有返回值,被返回的对象就成了new表达式的值。从形式上看,一个函数被作为构造函数还是普通函数执行的唯一区别,是否用new运算符。<br /> <br />上面的描述事实上有着更为精确的含义,这要把函数如果有原创 2010-11-02 14:56:00 · 2795 阅读 · 0 评论 -
JS中类或对象的定义
<br />我们知道,JS是面向对象的。谈到面向对象,就不可避免的要涉及类的概念。一般像c#,java这些强类型语言都有固定的定义类的语法。而JS的不同之处在于它能使用各种方法实现自己的类和对象。一般的实现有以下几种方式:<br /> <br />1.工厂方式<br />工厂方式是指创建一个返回特定对象类型的工厂函数,示例代码如下:<br />function createCar(sColor,iDoors,iMpg)<br />{<br /> var oTempCar=new Object;<br /原创 2010-11-01 21:32:00 · 2891 阅读 · 0 评论 -
JS中的数组的构造
<br />在JS中,数组使用构造函数Array()和运算符new创建的。一般,我们用三种不同的方式来调用Array()创建数组。<br /> <br />第一种方式是无参调用:<br />var a=new Array();<br /> <br />它创建的是一个没有元素的空数组。<br /> <br />第二种方式通过传递参数明确指定数组前n个元素的值:<br />var a=new Array(1,2,3,4,5,"testing");<br /> <br />这种构造方式的每一个参数都代表了一个元素原创 2010-11-04 23:21:00 · 4081 阅读 · 0 评论 -
键盘事件中的keypress事件和keyup事件的区别
<br />首先,说它们的官方解释:<br />keypress:用户按下一个按键,并产生一个字符时发生;<br />keyup:用户释放着的按键时发生;<br /> <br />但是,当我们在一个输入框中按下一个字符按键时。keypress事件在文本被插入到文本框之前触发的,而keyup是在文本被插入到文本框之后触发的。<br /> <br />例如下面的示例<br /><script type="text/javascript"><br />function show(oEvent)<br />{<br原创 2010-11-11 00:26:00 · 1114 阅读 · 0 评论 -
JS中的公有,私有,特权和静态成员
<br />公有成员:通过修改构造函数的prototype属性而定义的成员,可以由该构造函数的所有实例访问;<br />私有成员:在构造按书内部用定义的成员(属性用var,函数用function),只能在构造函数内部进行访问;<br />静态成员:在对象上直接定义的成员,只能由该对象进行访问;<br />特权成员:在构造函数内部用this定义的成员,访问权限和公有成员一样;<br /> <br />下面用一个例子演示这集中成员<br />//构造函数function myConstructor(mess原创 2011-03-26 13:31:00 · 2136 阅读 · 1 评论 -
《Javascript语言精粹》的学习(一).对象和函数
最近在学习小马和秦歌翻译的《javascript语言精粹》,果然如传闻般,里面的内容博大精深。有些章节所表达的意思往往需要看到后面的章节内容时才能够突然顿悟,因此,称这本书需要反复的去研究,真的名副其实。这两天看了对象和函数这两章,在这里把自己觉得需要关注的内容做一下笔记: ①对象常量中属性名的命名规范记得刚开始学习对象常量的时候,觉得它真的很简便。一个对象名,一个大括号,N个“名/值原创 2011-06-06 18:48:00 · 2474 阅读 · 0 评论 -
JS作用域与块级作用域
作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期。讲到这里,首先理解两个概念:块级作用域与函数作用域。 什么是块级作用域呢?任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。 函数作用域就好理解了(*^__^*) ,定义在函数中的参数和变量在函数外部是不可见的。 大多数原创 2011-06-08 14:22:00 · 12302 阅读 · 5 评论 -
javascript 事件代理初探
事件在javascript中一直是最强大的对象之一。javascript提供了addEventListener和attachEvent两个方法来为DOM节点绑定事件,jquery作了进一步封装,提供了兼容各个浏览器的bind方法。现在来看,这种传统的事件绑定方式存在着以下不足:1.可能需要绑定很多的EventHander。假如页面中某个表有100行,现在必须为每一行绑定一个click事件。原创 2012-09-29 14:20:35 · 2391 阅读 · 1 评论