﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-A JavaScript Fancier-随笔分类-javascript语法基础</title><link>http://www.cnitblog.com/yemoo/category/3112.html</link><description>伟大的javascript技术研究中...</description><language>zh-cn</language><lastBuildDate>Wed, 28 Sep 2011 04:06:55 GMT</lastBuildDate><pubDate>Wed, 28 Sep 2011 04:06:55 GMT</pubDate><ttl>60</ttl><item><title>《JavaScript设计模式》第一章：神奇的JavaScript(二)</title><link>http://www.cnitblog.com/yemoo/archive/2008/06/18/45852.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Wed, 18 Jun 2008 07:11:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2008/06/18/45852.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/45852.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2008/06/18/45852.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/45852.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/45852.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script><br><br><strong>对象的可变性<br></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在JavaScript中，任何东西都是对象（除了三种基本数据类型外，但其实在需要的时候它们会自动转换为对象），而且，任何对象都是可变的。这两者将使你可以使用一些其他语言所不允许的技术，如为函数设定属性等。
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;displayError(message)&nbsp;{<br>displayError.numTimesExecuted</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>alert(message);<br>};<br>displayError.numTimesExecuted&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;</span></div>
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;同样你可以在类被定义后或被实例化后对它进行修改。
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Class&nbsp;Person.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;Person(name,&nbsp;age)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;age;<br>}<br>Person.prototype&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getName:&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name;<br>&nbsp;&nbsp;&nbsp;&nbsp;},<br>&nbsp;&nbsp;&nbsp;&nbsp;getAge:&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Instantiate&nbsp;the&nbsp;class.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;alice&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Person('Alice',&nbsp;</span><span style="COLOR: #000000">93</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;bill&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Person('Bill',&nbsp;</span><span style="COLOR: #000000">30</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Modify&nbsp;the&nbsp;class.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>Person.prototype.getGreeting&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;'Hi&nbsp;'&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.getName()&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;'</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">';<br>};<br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Modify&nbsp;aspecific&nbsp;instance.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>alice.displayGreeting&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.getGreeting());<br>}</span></div>
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在这个例子中，在类的两个实例对象被创建后又为该类增加了getGreeting方法。根据prototype原型对象的原理这两个实例仍然可以拥有这个方法。但只有Alice拥有displayGreeting方法，其他的实例则没有。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;和变量动态性相关的一个概念是反射。你可以在运行时检测一个对象拥有哪些属性和方法。你可以使用这个技术实例化一个类并动态执行方法，而不需要知道方法名字（通过反射的方法）。这些是动态脚本的一些很重要的特性，是静态语言（如C++）等所不具有的。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这本书中模拟创建传统的面向对象特性所使用的大多数技术中都是使用对象可变性和反射来实现的。如果你曾经使用过像C++、Java这些不允许对实例进行继承及不允许对声明后的类进行修改的这类语言，你可能会觉得JavaScript的这些特性有点奇怪。在JavaScript中，所有的一切都可以在运行时被修改。这是一个很强大的特性，它使你可以完成其它语言所不可能完成的一些事。然后，它也有一个缺点，它不能保证为类定义的一些方法在后面的程序中仍能保持原状，它很有可能会被破坏。这也是JavaScript中类型检测很少见的一部分原因。我们在第二章讨论关于避免类型检查和界面检查时会讲解这些。<br><br><strong>继承</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在JavaScript中继承不如其他面向对象语言直接易懂。JavaScript采用的基于对象（原型）的继承，通过此方法可以模拟基于类的继承。本书中我们讲解了两种方式，你可以根据你的代码使用其中的一种方式。通常来说其中的一种会更适用于某个特定的任务。每种方式也有不同的性能特点，这通常是决定使用哪种方式的一个重要因素。这是一个很复杂的话题，我们在第四章再讨论。<br><br><strong>JavaScript中的设计模式</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1995年，Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides出版了一本名叫《设计模式》的书。编入这本书的目录的对象能彼此以不同的方式相互作用，并且它在不同类型的目标周围创造一种公用词汇。创造这些不同类型的目标的蓝图被称为设计模式。这本书以语言无关的方式描述这些模式，以便于将其用到任何地方。现在你手中的这本书就是将这些模式应用到了特定的语言JavaScript中。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JavaScript语言如此神奇以至于你可以充分发挥自己的想象力将设计模式应用到你的代码中。这里有三个有关为什么你要将设计模式应用到JavaScript中的主要原因：<br>1、可维护性：设计模式有助于使您的模块更好的实现松耦合。这使得你可以更容易的重构你的代码和更换不同的模块。这也使你可以更好的在大型团队中进行工作，并更好的和其他程序员合作。<br>2、便于交流：设计模式提供了一些公用的词汇来描述不同类型的任务目标。这使得程序员可以更简单的描述系统的工作方式而不用进行繁琐的描述，比如你可以说：&#8220;这里使用了工厂模式。&#8221;特定模式的命名使你可以不用深入细节，从而在更高的层级进行讨论问题。<br>3、性能：我们这本书提到的一些模式是最佳化模式。他们可以极大的提高你的程序的运行速度，并减少发送到客户端的代码量。flyWeight（第十三章）和Proxy模式（第十四章）是有关于此的一些很重要的例子。<br><br>这里也有两个你可能不想使用设计模式的原因：<br>1、复杂性：可维护性往往需要一些成本，那就是你的代码可能变得越来越复杂而且对于新程序员很难去理解。<br>2、性能问题：虽然一些模式可以提升性能，但大多数的模式会带来一些轻微的性能开销。根据你项目的具体要求，这些开销的影响可能被忽略不计，也可能根本不能被接受。<br>模式的实现是简单的，懂得使用哪个模式以及什么时候使用才是最难的。不加考虑的将一些设计模式应用到你的代码中是非常危险的。花费点功夫以确保你使用的模式是最合适的，并且保证对性能的影响在可接受范围之内。<br><br><strong>本章摘要</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;神奇的JavaScript提供了强大的功能。尽管它本身缺乏一些有用的内置特性，但它的灵活性使你可以自己为其添加这些特性。根据你的背景和个人喜好，你可以用多种不同的方式来完成一个任务。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JavaScript是弱类型的，程序员在定义变量时不需要声明类型。函数是第一型的并且可以被动态的创建，并且你可以创建闭包。所有的对象和类都是可变的，他们可以在运行时被修改。有两种继承方式可以被使用：原型方式和经典方式，每种方法都有其优点和缺点。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在JavaScript中，设计模式可以打来很大的益处，但如果使用不恰当也会带来很大的害处。在类似于JavaScript的这些轻量级语言中，过于复杂的架构很容易是一个程序瘫痪。一定要保证你的编程风格和使用的模式是适合你的工作的。<p><script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/45852.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2008-06-18 15:11 <a href="http://www.cnitblog.com/yemoo/archive/2008/06/18/45852.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《JavaScript设计模式》第一章：神奇的JavaScript(一)</title><link>http://www.cnitblog.com/yemoo/archive/2008/06/18/45851.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Wed, 18 Jun 2008 07:06:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2008/06/18/45851.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/45851.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2008/06/18/45851.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/45851.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/45851.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script><p align=left><span style="FONT-SIZE: 12px"><strong style="FONT-SIZE: 18pt">第一章&nbsp;&nbsp;神奇的JavaScript<br></strong></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JavaScript是近年来一个非常流行并被广泛应用的语言。因为它被几乎所有的浏览器所支持，因此也得到了广泛的推广。作为一种语言，它在我们的生活变得难以相信的重要，帮助我们增强web的功能，创建丰富的用户界面。<br>为什么仍然有一些人认为它是一种&#8220;玩具式&#8221;的语言，认为它不适合于专业的程序员。我认为这是因为他们没有认识到它的真正的强大之处和它相比其它各种编程语言的独特性。JavaScript是一门非常神奇高深的语言，拥有一些C家族类语言所没有的特性。<br>本章我们将探讨是哪些特性使JavaScript如此的神奇高深。我们将看到JavaScript使你可以用多种不同的方式来完成同一件事情，以及如何通过函数式程序设计的方式来模拟实现面向对象程序设计。我们将讨论为什么你应该把设计模式放在首页以及如何使用它来使你的代码更有效，工作更简单。<br><br><strong>灵活的JavaScript</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JavaScript的一个很重要的特性就是其灵活性。作为JavaScript程序员，你可以使你的程序很简单或很复杂。JavaScript允许你使用各种不同的编程风格。你可以使用函数式风格或者接近于面向对象的编程风格来编写你的代码，同样你可以在不了解函数式或面向对象编程的情形下书写相对复杂的程序，你也可以通过写一些简单的函数来使用它。或者这些也是一些人把JavaScript看做&#8220;玩具&#8221;语言的一个原因，但我们应该认为这些是一些优秀的特性。它可以使程序员只掌握小部分易学的语言子集来完成一些有用的功能，同样它也意味着当你成为一个更加高级的程序员时JavaScript会在你手中发挥更大的能力。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JavaScript允许你去模拟其他语言中的模式和思想。此外它自身还包含一些独有的特性。它提供了和传统服务端语言完全一样的面向对象特性。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们来看一下通过几个不同的代码组织方式来完成同样的一件任务：启动和停止一个动画。如果你不理解这些例子也无所谓，我们这里使用的所有模式和技术都会在本书中讲到。现在，你可以把这一节做为JavaScript可以通过不同的方式来完成同一件任务的一个实际的例子。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果你以前是一个面向过程的程序员，你可以会像下面这样做： </p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Start&nbsp;and&nbsp;stop&nbsp;animations&nbsp;using&nbsp;functions.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;startAnimation()&nbsp;{<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>}<br></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;stopAnimation()&nbsp;{<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>}<br></span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这种方法非常简单，但它没有创建一个动画的对象来使你可以保存状态并拥有一些只作用于其内部状态的方法。下面这段代码定义了一个类使你可以创建这样的一个对象：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Anim&nbsp;class.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;Anim&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>};<br>Anim.prototype.start&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>};<br>Anim.prototype.stop&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>};<br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Usage.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;myAnim&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Anim();<br>myAnim.start();<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>myAnim.stop();</span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里定义了一个叫做Anim的类并为该类的prototype属性增加了两个方法。我们在第三章将详细讨论这种技术。如果你喜欢创建一个只有一个声明的类，你可能会写出如下的代码：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Anim&nbsp;class,&nbsp;with&nbsp;a&nbsp;slightly&nbsp;different&nbsp;syntax&nbsp;for&nbsp;declaring&nbsp;methods.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;Anim&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{&nbsp;<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>};<br>Anim.prototype&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;{<br>start:&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>},<br><br>stop:&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>}<br>};<br></span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这看起来有点类似于经典的面向对象编程风格：将函数声明嵌套在一个类声明之内。如果你之前使用过这种风格，你可以试一下下面这个例子，如果不太理解下面的部分代码也不要担心：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Add&nbsp;a&nbsp;method&nbsp;to&nbsp;the&nbsp;Function&nbsp;object&nbsp;that&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;declare&nbsp;methods.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>Function.prototype.method&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(name,&nbsp;fn)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.prototype[name]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fn;<br>};<br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Anim&nbsp;class,&nbsp;with&nbsp;methods&nbsp;created&nbsp;using&nbsp;a&nbsp;convenience&nbsp;method.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;Anim&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{&nbsp;<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>};<br>Anim.method('start',&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>});<br>Anim.method('stop',&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>});</span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Function.prototype.method使你可以为类增加新的方法。它可以接收两个参数：第一个是作为新方法的名字的字符串，第二个是为这个方法名指定的一个函数。<br>你可以通过对Function.prototype.method稍作修改以使其可以进行链式调用。为此，你只需要在创建完每个方法时返回一个this即可。我们在第6章将讨论链：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;This&nbsp;version&nbsp;allows&nbsp;the&nbsp;calls&nbsp;to&nbsp;be&nbsp;chained.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>Function.prototype.method&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(name,&nbsp;fn)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.prototype[name]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fn;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">;<br>};<br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Anim&nbsp;class,&nbsp;with&nbsp;methods&nbsp;created&nbsp;using&nbsp;a&nbsp;convenience&nbsp;method&nbsp;and&nbsp;chaining.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;Anim&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{&nbsp;<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>};<br>Anim.<br>method('start',&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>}).<br>method('stop',&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br><img src="http://www.cnitblog.com/Images/dot.gif"><br>});<br></span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你刚刚看到了我们使用五种略微不同的方式来完成了同样一件任务。根据你的编程背景，你可能觉得某种方式比其他一种更好。这其实很好，JavaScript允许你使用最适合你们手中项目的编程方式。每种方式拥有不同的特点和不同代码量，效率和性能。我们在本书的第一部分涵盖了所有的这些编程方式。<br><br><strong>一种弱类型的语言</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在JavaScript中，在定义变量时不需要定义类型，但是这并不意味着它没有变量类型。一个变量可以保存多种数据类型的数据，其类型取决所赋予给它的数据。JS有三种基本的数据类型：布尔型、数字型和字符串型（JavaScript不同于其他的编程语言，它将整型和浮点型作为同一种类型），此外，它含有可执行代码的function（函数）类型，还有包含复合类型的对象（Object）类型（Array是一种特殊的对象，它包含一些有序的数据集合）。现在，它还有null和undefiend数据类型。基本数据类型按值传递，其它的数据类型是按照引用传递，因此如果你不小心就可能导致一些意外的问题。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;和其它弱类型语言一样，变量会根据被赋予的值改变其数据类型。基本数据类型之间可以互相转换，toString方法可以将一个数字或布尔型数据转换为一个字符串。parseFloat和floatInt函数可以将字符串转换为数字型，双否定号可以将一个字符串或数字数据转换成布尔类型。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var bool = !!num;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;弱类型的变量提供了很多了灵活性，你不需要担心数据类型错误，因为在需要的时候JavaScript会自动做转换。<br><br><strong>函数是第一型对象</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在JavaScript语言中，函数是第一性的对象。它可以被存储在一个变量中，作为参数传入到函数中，被函数作为返回值返回，或者在运行的时间动态构造。这些特性使你在使用函数增加了很大的灵活性和表现能力。在本书后面的部分你会看到，这些特性是你构建一个传统的面向对象框架的基础。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你可以使用functiuon(){&#8230;}方法创建一个匿名的函数。它没有函数名但可以被赋给一个变量。下面是一个匿名函数的例子：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;An&nbsp;anonymous&nbsp;function,&nbsp;executed&nbsp;immediately.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;foo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;bar&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;alert(foo&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;bar);<br>})();<br></span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个函数在定义和执行时没有赋给任何变量。最后的一对括号会使该函数立即执行。但并一定只能这样写：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;An&nbsp;anonymous&nbsp;function&nbsp;with&nbsp;arguments.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(foo,&nbsp;bar)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;alert(foo&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;bar);<br>})(</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br></span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个匿名函数和第一个基本相同，但这个函数没有使用var在内部定义变量，而是作为参数传入了函数，这个函数可以有一个返回值并可以被赋予给一个变量。
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;An&nbsp;anonymous&nbsp;function&nbsp;that&nbsp;returns&nbsp;avalue.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;baz&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(foo,&nbsp;bar)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;foo&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;bar;<br>})(</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;baz&nbsp;will&nbsp;equal&nbsp;20.</span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;匿名函数的一个最有趣的功能就是创建闭包。闭包就是通过使用嵌套函数，创建一个保护变量空间。JavaScript有函数级的作用域，也就是说在函数中定义的变量不能被外部访问。它还有语法上作用域，也就是函数运行在他们定义的作用域而不是他们执行时的作用域。这两者相结合使你可以通过匿名函数创建一个保护变量。你可以使用这点为类创建私有变量。<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;An&nbsp;anonymous&nbsp;function&nbsp;used&nbsp;as&nbsp;aclosure.&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;baz;<br>(</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;foo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;bar&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;baz&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;foo&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;bar;&nbsp;<br>};<br>})();<br>baz();&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;baz&nbsp;can&nbsp;access&nbsp;foo&nbsp;and&nbsp;bar,&nbsp;even&nbsp;though&nbsp;it&nbsp;is&nbsp;executed&nbsp;outside&nbsp;of&nbsp;the</span><span style="COLOR: #008000"><br>//</span><span style="COLOR: #008000">&nbsp;anonymous&nbsp;function.</span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;变量foo和bar只在匿名函数中定义，因为baz函数也定义在这个闭包中，因此它可以访问这两个变量，甚至在闭包函数执行结束之后。这是我们整本书都会一直接触的一个复杂逻辑。我们在第三章讨论封装的时候将详细讲解这种技术。
<p><script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script></p><img src ="http://www.cnitblog.com/yemoo/aggbug/45851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2008-06-18 15:06 <a href="http://www.cnitblog.com/yemoo/archive/2008/06/18/45851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>attachEvent传递给其handler的一个默认参数 </title><link>http://www.cnitblog.com/yemoo/archive/2008/01/02/38384.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Wed, 02 Jan 2008 07:25:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2008/01/02/38384.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/38384.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2008/01/02/38384.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/38384.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/38384.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script>
<br><br>attachEvent是IE专有的事件捕获函数，偶也用过了很多次，传入事件名及捕获句柄（即事件处理函数）即可。<br><br>如document.attachEvent("onclick",function(){alert('click')});代表点击页面任意位置都会弹出消息&#8220;click&#8221;。<br><br>对于第二个参数function，确实attachEvent会默认传递过去一个参数，不知其他人有没有注意到过，反正偶是第一次发现。<br><br>不信你就试试以下代码(单击页面任意位置)：
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;test(){<br>&nbsp;&nbsp;&nbsp;&nbsp;alert(argument.length)<br>&nbsp;&nbsp;&nbsp;&nbsp;alert(arguments[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;document.attachEvent(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">onclick</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,test);<br>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div>
<br>执行上面的函数会分别弹出1和object。<br><br>那这个object是什么呢？可能很多人都会猜到了，就是<span style="COLOR: #ff0000">event对象</span>。该event对象包含了当前触发事件的所有信息。<br><br>执行以下测试代码（单击页面任意位置）：
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script&nbsp;type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;test(){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;info</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">'';<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;arguments[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\t:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">arguments[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][i]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;alert(info);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;document.attachEvent(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">onclick</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,test);<br>&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div>
<br>发现弹出了以下信息（根据你点击位置的不同显示信息会有不同）：
<div style="BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid; BACKGROUND-COLOR: #f0f0f0">recordset :null <br>type :click <br>fromElement :null <br>toElement :null <br>altLeft :false <br>keyCode :0 <br>repeat :false <br>reason :0 <br>behaviorCookie :0 <br>contentOverflow :false <br>behaviorPart :0 <br>dataTransfer :null <br>ctrlKey :false <br>shiftLeft :false <br>dataFld : <br>returnValue :undefined <br>qualifier : <br>wheelDelta :0 <br>bookmarks :null <br>button :0 <br>srcFilter :null <br>nextPage : <br>cancelBubble :false <br>x :328 <br>y :482 <br>srcElement :[object] <br>screenX :490 <br>screenY :572 <br>srcUrn : <br>boundElements :[object] <br>clientX :328 <br>clientY :482 <br>propertyName : <br>shiftKey :false <br>ctrlLeft :false <br>offsetX :326 <br>offsetY :480 <br>altKey :false</div>
<br><br>这些信息可能有很多对我们都是有用的。但实际上个人感觉这个参数在IE中用处并不大，因为IE中Event是一个全局对象，可以直接使用event获取需要的信息。<p><script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/38384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2008-01-02 15:25 <a href="http://www.cnitblog.com/yemoo/archive/2008/01/02/38384.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>document.compatMode介绍(Ext2学习总结) </title><link>http://www.cnitblog.com/yemoo/archive/2007/10/11/34713.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Thu, 11 Oct 2007 08:46:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2007/10/11/34713.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/34713.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2007/10/11/34713.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/34713.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/34713.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script><br><br>&nbsp;&nbsp; 对于document.compatMode，很多朋友可能都根我一样很少接触，知道他的存在却不清楚他的用途。今天在ext中看到document.compatMode的使用，感觉这个对于我们开发兼容性的web页面还是很有帮助，我们都知道，IE对盒模型的渲染在Standards Mode和Quirks Mode是有很大差别的，在Standards Mode下对于盒模型的解释和其他的标准浏览器是一样，但在Quirks Mode模式下则有很大差别，而在不声明Doctype的情况下，IE默认又是Quirks Mode。所以为兼容性考虑，我们可能需要获取当前的文档渲染方式。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.compatMode正好派上用场，它有两种可能的返回值：<span style="COLOR: #ff0000">BackCompat和CSS1Compat</span>，对其解释如下：<br><span style="COLOR: #008000">BackCompat Standards-compliant mode is not switched on. (Quirks Mode)<br>CSS1Compat Standards-compliant mode is switched on. (Standards Mode)</span><br><br>&nbsp;&nbsp;&nbsp;&nbsp; 在实际的项目中，我们还需要在获取浏览是否IE，这样就可以得到IE的渲染模式了。在Ext中的代码：isBorderBox=isIE&amp;&amp;!isStrict。<p><script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/34713.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2007-10-11 16:46 <a href="http://www.cnitblog.com/yemoo/archive/2007/10/11/34713.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>window.onerror事件学习新收获</title><link>http://www.cnitblog.com/yemoo/archive/2007/10/06/34442.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Sat, 06 Oct 2007 13:15:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2007/10/06/34442.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/34442.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2007/10/06/34442.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/34442.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/34442.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script><br><br>&nbsp;&nbsp;在捕获js错误时，我们通常使用try{}catch(e){}的方式，然后通过e.errorMsg等方式获取错误信息然后报告错误。但对于onerror事件可能很少问津，我们是否思考过如何报告错误所在的行号？如果想过这个是否也被这个问题所困扰过，是否认为在js里不可能捕获错误的行号呢?其实本人就遇到上述的几个问题，今日读某人写的一段js代码顿然发现了onerror事件，要说onerror这个时间也是n久以前就知道了，但对于其所带有的三个参数和其特殊性质却一直没有去了解过。经过自己的研究测试，对onerror事件有了一些新的认识和了解。在页面没有错误时，window.onerror事件是不存在的，也就是null（废话！没出错如果onerror出现还正常吗？）我们一般通过函数名传递的方式（引用的方式）将要执行的操作函数传递给onerror事件，如window.onerror=reportError;window.onerror=function(){alert('error')}，但我们可能不知道该事件触发时还带有三个默认的参数，他们分别是<span style="COLOR: #ff0000">错误信息，错误页面的url和错误行号</span>。要知道这个可是事件，就如onclick和onmouseover等事件一样，但它是有参数。我们可以这样测试。</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text/javascript"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br>window.onerror</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">testError;<br></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;testError(){<br>&nbsp;arglen</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">arguments.length;<br>&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;errorMsg</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">参数个数：</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">arglen</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">个</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br>&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">arglen;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">){<br>&nbsp;&nbsp;errorMsg</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">\n参数</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">1</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">：</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">arguments[i];<br>&nbsp;}<br>&nbsp;alert(errorMsg);<br>&nbsp;window.onerror</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br>&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br>}<br><br></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;test(){<br>error<br>}<br>test()<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span></div>
<p><br>首先将testError方法绑定给onerror事件，然后在test方法里触发一个错误，在IE中执行时我们发现如下提示：<br><br>---------------------------<br>Microsoft Internet Explorer<br>---------------------------<br>参数个数：3个<br>参数1：'error' 未定义<br>参数2：<a href="file:///E:/yanwei/test/testError.html">file://E:\yanwei\test\testError.html</a><br>参数3：14<br>---------------------------<br>确定&nbsp;&nbsp; <br>---------------------------<br><br>可以发现，当出错时函数testError捕获到了三个参数。通过将函数绑定到onerror事件就可以在页面出错时捕获以上三个参数。</p>
<p><strong>在测试中还发现以下一些问题：</strong><br>1、通过在函数末尾加上return true，可以在函数出错时不会弹出系统的错误信息(IE)。<br>2、如果页面出现多次错误，只捕获第一次错误并进行处理然后终止后面程序的执行。<br>3、onerror事件并不能捕获所有的错误，只能捕获函数外或函数内错误（？？这个是什么意思，可不是开玩笑呢），如<br>adasdf;<br>function test(){<br>aaaa;<br>}<br>可以捕获到adasdf未定义的错误<br>function test(){<br>aaaa;<br>}<br>可以捕获到aaaa未定义的错误，而对于<br>functiona test(){}或function test()dd{}<br>的错误却不能捕获而会直接弹出系统错误信息。<br>4、onerror在IE和FF等浏览器执行方式是一样的，而且都包含这三个参数。</p><br><script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/34442.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2007-10-06 21:15 <a href="http://www.cnitblog.com/yemoo/archive/2007/10/06/34442.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>clientHeight、offsetHeight和scrollHeight[转自http://blog.sina.com.cn/apao]</title><link>http://www.cnitblog.com/yemoo/archive/2007/05/25/27591.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Fri, 25 May 2007 05:46:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2007/05/25/27591.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/27591.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2007/05/25/27591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/27591.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/27591.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script>
<div id=articleContent>
<p>我们这里说说四种浏览器对 document.body 的&nbsp;clientHeight、offsetHeight 和 scrollHeight 的解释。</p>
<p>这四种浏览器分别为IE（Internet Explorer）、NS（Netscape）、Opera、FF（FireFox）。</p>
<p><strong>clientHeight<br></strong>大家对 clientHeight 都没有什么异议，都认为是内容可视区域的高度，也就是说页面浏览器中可以看到内容的这个区域的高度，一般是最后一个工具条以下到状态栏以上的这个区域，与页面内容无关。</p>
<p><strong>offsetHeight<br></strong>IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。<br>NS、FF 认为 offsetHeight 是网页内容实际高度，可以小于 clientHeight。</p>
<p><strong>scrollHeight</strong><br>IE、Opera 认为 scrollHeight 是网页内容实际高度，可以小于 clientHeight。<br>NS、FF 认为 scrollHeight 是网页内容高度，不过最小值是 clientHeight。</p>
<p><strong>简单地说</strong><br>clientHeight 就是透过浏览器看内容的这个区域高度。<br>NS、FF 认为 offsetHeight 和 scrollHeight 都是网页内容高度，只不过当网页内容高度小于等于 clientHeight 时，scrollHeight 的值是 clientHeight，而 offsetHeight 可以小于 clientHeight。<br>IE、Opera 认为 offsetHeight 是可视区域&nbsp;clientHeight 滚动条加边框。scrollHeight 则是网页内容实际高度。</p>
<p><strong>同理</strong><br>clientWidth、offsetWidth 和 scrollWidth 的解释与上面相同，只是把高度换成宽度即可。</p>
<p><strong>但是<br></strong>FF 在不同的 DOCTYPE 中对 clientHeight 的解释不同， xhtml 1 trasitional 中则不是如上解释的。其它浏览器则不存在此问题。</p>
</div>
 <script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/27591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2007-05-25 13:46 <a href="http://www.cnitblog.com/yemoo/archive/2007/05/25/27591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js代码触发事件　函数列表</title><link>http://www.cnitblog.com/yemoo/archive/2007/04/18/25865.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Wed, 18 Apr 2007 03:49:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2007/04/18/25865.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/25865.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2007/04/18/25865.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/25865.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/25865.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script>
onabort 当用户中断下载图像时触发。 <br>onactivate 当对象设置为活动元素时触发。 <br>onafterprint 对象所关联的文档打印或打印预览后立即在对象上触发。 <br>onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发。 <br>onbeforeactivate 对象要被设置为当前元素前立即触发。 <br>onbeforecopy 当选中区复制到系统剪贴板之前在源对象触发。 <br>onbeforecut 当选中区从文档中删除之前在源对象触发。 <br>onbeforedeactivate 在 activeElement 从当前对象变为父文档其它对象之前立即触发。 <br>onbeforeeditfocus 在包含于可编辑元素内的对象进入用户界面激活状态前或可编辑容器变成控件选中区前触发。 <br>onbeforepaste 在选中区从系统剪贴板粘贴到文档前在目标对象上触发。 <br>onbeforeprint 对象的关联文档打印或打印预览前在对象上触发。 <br>onbeforeunload 在页面将要被卸载前触发。 <br>onbeforeupdate 当成功更新数据源对象中的关联对象前在数据绑定对象上触发。 <br>onblur 在对象失去输入焦点时触发。 <br>onbounce 当 marquee 对象的 behavior 属性设置为&#8220;alternate&#8221;且字幕的内容到达窗口一边时触发。 <br>oncellchange 在数据供应者中的数据变更时触发。 <br>onchange 当对象或选中区的内容改变时触发。 <br>onclick 在用户用鼠标左键单击对象时触发。 <br>oncontextmenu 在用户使用鼠标右键单击客户区打开上下文菜单时触发。 <br>oncontrolselect 当用户将要对该对象制作一个控件选中区时触发。 <br>oncopy 当用户复制对象或选中区，将其添加到系统剪贴板上时在源元素上触发。 <br>oncut 当对象或选中区从文档中删除并添加到系统剪贴板上时在源元素上触发。 <br>ondataavailable 每当异步传输数据的数据源对象的数据到达时触发。 <br>ondatasetchanged 当数据源对象对应的数据集发生变更时触发。 <br>ondatasetcomplete 触发就表明数据源对象所有数据都可用。 <br>ondblclick 当用户双击对象时触发。 <br>ondeactivate 当 activeElement 从当前对象变为父文档其它对象时触发。 <br>ondrag 当进行拖曳操作时在源对象上持续触发。 <br>ondragend 当用户在拖曳操作结束后释放鼠标时在源对象上触发。 <br>ondragenter 当用户拖曳对象到一个合法拖曳目标时在目标元素上触发。 <br>ondragleave 当用户在拖曳操作过程中将鼠标移出合法拖曳目标时在目标对象上触发。 <br>ondragover 当用户拖曳对象划过合法拖曳目标时持续在目标元素上触发。 <br>ondragstart 当用户开始拖曳文本选中区或选中对象时在源对象上触发。 <br>ondrop 当鼠标按钮在拖曳操作过程中释放时在目标对象上触发。 <br>onerror 当对象装载过程中发生错误时触发。 <br>onerrorupdate 更新数据源对象中的关联数据出错时在数据绑定对象上触发。 <br>onfilterchange 当可视滤镜更改状态或完成转换时触发。 <br>onfinish 当字幕循环完成后触发。 <br>onfocus 当对象获得焦点时触发。 <br>onfocusin 当元素将要被设置为焦点之前触发。 <br>onfocusout 在移动焦点到其它元素之后立即触发于当前拥有焦点的元素上触发。 <br>onhelp 当用户在浏览器为当前窗口时按 F1 键时触发。 <br>onkeydown 当用户按下键盘按键时触发。 <br>onkeypress 当用户按下字面键时触发。 <br>onkeyup 当用户释放键盘按键时触发。 <br>onlayoutcomplete 当打印或打印预览版面处理完成用来自于源文档的内容填充当前 LayoutRect 对象时触发。 <br>onload 在浏览器完成对象的装载后立即触发。 <br>onlosecapture 当对象失去鼠标捕捉时触发。 <br>onmousedown 当用户用任何鼠标按钮单击对象时触发。 <br>onmouseenter 当用户将鼠标指针移动到对象内时触发。 <br>onmouseleave 当用户将鼠标指针移出对象边界时触发。 <br>onmousemove 当用户将鼠标划过对象时触发。 <br>onmouseout 当用户将鼠标指针移出对象边界时触发。 <br>onmouseover 当用户将鼠标指针移动到对象内时触发。 <br>onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。 <br>onmousewheel 当鼠标滚轮按钮旋转时触发。 <br>onmove 当对象移动时触发。 <br>onmoveend 当对象停止移动时触发。 <br>onmovestart 当对象开始移动时触发。 <br>onpaste 当用户粘贴数据以便从系统剪贴板向文档传送数据时在目标对象上触发。 <br>onpropertychange 当在对象上发生对象上发生属性更改时触发。 <br>onreadystatechange 当对象状态变更时触发。 <br>onreset 当用户重置表单时触发。 <br>onresize 当对象的大小将要改变时触发。 <br>onresizeend 当用户更改完控件选中区中对象的尺寸时触发。 <br>onresizestart 当用户开始更改控件选中区中对象的尺寸时触发。 <br>onrowenter 触发就表明当前行已经在数据源中更改，对象上有可用的新数据值。 <br>onrowexit 当数据源控件更改对象当前行前触发。 <br>onrowsdelete 当行将要从记录集中被删除时触发。 <br>onrowsinserted 当在当前记录集中插入新行后触发。 <br>onscroll 当用户滚动对象的滚动条时触发。 <br>onselect 当当前选中区改变时触发。 <br>onselectionchange 当文档的选中状态改变时触发。 <br>onselectstart 对象将要被选中时触发。 <br>onstart 在 marquee 对象的每次循环开始时触发。 <br>onstop 当用户单击停止按钮或离开 Web 页面时触发。 <br>onsubmit 当表单将要被提交时触发。 <br>onunload 在对象卸载前立即触发。
 <script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/25865.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2007-04-18 11:49 <a href="http://www.cnitblog.com/yemoo/archive/2007/04/18/25865.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将函数赋值给一个对象的属性或方法的一个小问题</title><link>http://www.cnitblog.com/yemoo/archive/2007/01/26/22314.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Thu, 25 Jan 2007 16:44:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2007/01/26/22314.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/22314.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2007/01/26/22314.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/22314.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/22314.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script><br><br>以前总感觉有些问题，但一直不知道到底是怎么回事，现在终于明白了，原来将一个函数赋给一个对象的属性或方法分两种情况：<br><br><strong>1，如果函数没有参数，可以直接将名字赋给其属性或方法。<br></strong>如document.onmouseover=doIt;//注意doIt不要带括号<br><font color=#000080><font color=#ff0000>这样赋值的实质是将后面函数的内容赋给前面对象属性或方法，等该属性或方法执行时执行后面函数的内容。</font><br></font>但是如果用document.onmouseover=doIt(id);将会出现问题，实质上并没有赋给document.onmouseover，<font color=#ff0000>js在解析此行时直接执行了doIt(id)函数，然后将doIt(id)的执行结果赋给document.onmouseover。<br></font><font color=#000000>又如window.onload=getStart(id);并不会等页面加载完成后才执行getStart函数，而是网页加载到这行代码时就立即执行了getStart，然后将返回结果赋给window.onload。<br><br><strong>2，如果要将带有参数的函数赋给其属性或方法则应该用function(){}包含起来。</strong><br>如：<br>document.onmouseover=function(){doIt(id)};<br>window.onload=function(){getStart()};<br>这样就能将getStart的内容传给前面的对象属性了。</font> <p><script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/22314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2007-01-26 00:44 <a href="http://www.cnitblog.com/yemoo/archive/2007/01/26/22314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>obj.style.left/top与obj.offsetTop等的一个小区别</title><link>http://www.cnitblog.com/yemoo/archive/2007/01/18/22047.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Thu, 18 Jan 2007 13:57:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2007/01/18/22047.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/22047.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2007/01/18/22047.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/22047.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/22047.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script>
以前很少用这些属性，今天使用obj.style.left时发现无法正确显示效果，后来测试其值发现原来obj.style.left/top带有单位px，而其他的都不带，是纯数字。因此要使用obj.style.left数字值，需要现使用parseInt转换一下！<br /> 
<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/22047.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2007-01-18 21:57 <a href="http://www.cnitblog.com/yemoo/archive/2007/01/18/22047.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《JavaScript高级程序设计》学习总结之ECMAScript基础（一）</title><link>http://www.cnitblog.com/yemoo/archive/2007/01/06/21590.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Fri, 05 Jan 2007 17:11:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2007/01/06/21590.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/21590.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2007/01/06/21590.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/21590.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/21590.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script>  <br /><font color="#ff0000">
    <font color="#000000">
      <font color="#008000" size="4">
        <u>注：该文章会不断添加更新。</u>
      </font>
      <br />
      <br />
      <strong>一、基本语法<br /></strong>
    </font>ECMAScript基础概念如下：<br /></font>1，<strong>区分大小写</strong>。在ECMAScript中变量，函数名运算符及其他一切东西都是区分大小写的。<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; test不等于Test。<br />2，<strong>变量是弱类型的</strong>。定义ECMAScript变量时只需使用var即可将它初始化为任意的值。<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var color="red";&#160;&#160;&#160; //一个String类型变量<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var num=25;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//一个Number类型变量<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; var visible=true;&#160;&#160;&#160; //一个Boolean类型变量<br />3，<strong>每行结尾的分号可有可无</strong>。如果没有分号，ECMAScript自动将本行的结尾看作该语句的结束。<br />（最好的习惯是写上分号，否则部分浏览器无法运行）。<br />4，<strong>注释与java/C等相同</strong>。当行注释为&#8220;//&#8221;，块注释为/*........*/。<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //单行注释<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; /*多行<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 注释*/<br />5，<strong>括号代表代码块</strong>。{...}之间的语句为一个代码块。<br /><br /><br /><strong>二、变量</strong><br />&#160;&#160;&#160; <font color="#ff0000">基本规则：</font><br />&#160;&#160;&#160; 1、首字母必须是字母，下划线（_）或<font color="#ff0000">美元符号（$）</font><font color="#000000">。<br /></font>&#160;&#160;&#160; 2、剩余字符可以使下划线，美元符号或字母，数字。<br />&#160;&#160;&#160;<br />&#160;&#160;<font color="#ff0000">&#160;命名规则（非强制性规则）：</font><br />&#160;&#160; 1、<strong>Camel标记法</strong>。（首字母小写，剩余单词首字母大写）。<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 如var&#160;myTestVar。<br />&#160;&#160; 2、<strong>Pascal标记法</strong>。(首字母及剩余单词首字母全大写。)<br />&#160;&#160;&#160;&#160;&#160;&#160; 如var MyTestVar。<br />&#160;&#160; 3、<strong>匈牙利类型标记法</strong>。（在变量名前附加一个小写字母说明该变量的类型）<br />&#160;&#160;&#160;&#160;&#160; 如iNum（Integer型）,sValue（String型）,bStatus（Boolean型）,oBox（Object型）等。<br /><br />&#160; <font color="#ff0000">其他：</font><br />&#160; 变量使用前可以不用声明（不是一个好习惯）。<br /><br />三、变量类型<br />&#160;&#160;&#160;<font color="#ff0000"> 原始值与引用值：<br /></font>&#160;&#160;&#160; 1、<em>原始值</em>是存储在<u><strong>栈</strong></u>中的简单数据段。<br />&#160;&#160;&#160; 2、<em>引用值</em>（即对象类型值）是存储在<u><strong>堆</strong></u>中的对象。（存储在变量出的值是一个指针，指向存储对象的内存处）。<br /><br />&#160;&#160;&#160; <font color="#ff0000">原始类型（5个）：</font><br />&#160;&#160;&#160; Undefined,Null,Integer,<strong>String</strong>,Boolean.<br /><br />&#160;&#160; 使用<font color="#0000ff"><strong>typeof</strong></font>测试变量类型（原始类型）：<br />&#160;&#160; 实例： 
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span>&#160;<span style="COLOR: #000000">&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&#160;sTemp</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test&#160;String</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">2</span>&#160;<span style="COLOR: #000000">&#160;&#160;&#160;&#160;alert(</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">&#160;sTemp);&#160;&#160;&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出String</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">3</span>&#160;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&#160;&#160;&#160;&#160;alert(</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">&#160;</span><span style="COLOR: #000000">95</span><span style="COLOR: #000000">);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出Number</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">4</span>&#160;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&#160;&#160;&#160;&#160;alert(</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">&#160;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出object</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">5</span>&#160;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&#160;&#160;&#160;&#160;alert(</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">&#160;aaa);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">未定义变量返回undefined</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">6</span>&#160;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&#160;&#160;&#160;&#160;alert(</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">&#160;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);&#160;&#160;&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出Boolean</span></div><br />&#160;&#160;&#160; <font color="#ff0000"><strong>注意：</strong></font><font color="#0000ff">对象和NULL都会返回object。因为null被认为是对象的占位符。<br /></font>&#160;<br />（Undefined类型）<br />&#160; 1、<strong>undefined指未初始化的变量，或无返回值的函数。<br /></strong><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&#160;oTemp;<br /></span><span style="COLOR: #008080">2</span>&#160;<span style="COLOR: #000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;alert(</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">&#160;oTemp);&#160;&#160;&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">定义但未初始化</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">3</span>&#160;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;alert(</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">&#160;oTemp2);&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">未定义亦未初始化</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">4</span>&#160;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&#160;testFunc(){<br /></span><span style="COLOR: #008080">5</span>&#160;<span style="COLOR: #000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br /></span><span style="COLOR: #008080">6</span>&#160;<span style="COLOR: #000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;alert(</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">&#160;testFunc());<br /></span><span style="COLOR: #008080">7</span>&#160;<span style="COLOR: #000000"></span></div>&#160;&#160;&#160;&#160;&#160; 都将返回undefined。&#160;&#160;<br />&#160;&#160;&#160;&#160;&#160; <font color="#ff0000">注意：如果写成alert(typeof testFunc)将会返回function。因为这里返回的是该名称的类型而不是函数值。</font><br />&#160;&#160;&#160; 2、<strong>未声明变量不能参与任何操作或运算。</strong>&#160;&#160;&#160; 
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span>&#160;<span style="COLOR: #000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&#160;oTemp;<br /></span><span style="COLOR: #008080">2</span>&#160;<span style="COLOR: #000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;alert(undefined</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">oTemp);&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">返回true</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">3</span>&#160;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;alert(undefined</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">oTemp2);&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">未声明的变量做比较返回&#8220;变量未定义&#8221;的错误信息</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">4</span>&#160;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;alert(oTemp</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">aa</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">返回&#8220;undefinedaa&#8221;</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">5</span>&#160;<span style="COLOR: #008000"></span><span style="COLOR: #000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;alert(oTemp2</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">aa</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">返回&#8220;变量未定义&#8221;的错误信息</span></div><br />（Number类型）<br />&#160;1、<strong>所有整数可以被表示为十进制，八进制或十六进制。</strong><br />&#160;&#160;&#160;&#160;&#160;&#160; var iNum=55;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //十进制数据<br />&#160;&#160;&#160;&#160;&#160;&#160; var iNum=070;&#160;&#160;&#160;&#160;&#160; //八进制数据，在前面加一个0，070代表十进制56<br />&#160;&#160;&#160;&#160;&#160;&#160; var iNum=0xab;&#160;&#160;&#160;&#160; //十六进制数据，在数字前加0x，0xab代表十进制171<br />&#160;2、<strong>尽管所有整数可表示为八进制或十六进制，但所有数学运算都返回十进制。</strong><br />&#160;&#160;&#160;&#160;&#160; 如上述定义的变量用alert()输出时都是十进制数据。<br />&#160;3、<strong>要定义浮点数，必须包括小数点和小数点后的一位数字</strong>。（如用1.0而不是1）<br />&#160;4、<strong>对于非常大或非常小的数，可以用科学计数法表示（数字加e或E，后加乘以10的倍数）。</strong><br />&#160;&#160;&#160;&#160;&#160; var fNum=3.125e7 表示31250000，fNum1=3e-7表示0.0000003。<br />&#160;5、<strong>ECMAScript默认将具有6个或6个以上前导0的浮点数转换为科学计数法。<br /></strong>&#160;6、<strong>所有ECMAScript的数都必须落在Number.MAX_VALUE(约为1.79769E308)和Number.MIN_VALUE(约为5E-324)值之间。但计算生成的数值结果可以不落在这个范围之间。<br /></strong>&#160;7、<strong>可以调用isInfinite()判断一个数是否是一个有效数字。</strong><br />&#160;&#160;&#160;&#160;&#160; isInfinite(Number.MAX_VALUE);&#160;&#160;&#160;&#160;&#160;&#160;&#160; //返回true<br />&#160;&#160;&#160;&#160;&#160;&#160;isInfinite(2*Number.MAX_VALUE);&#160;&#160;&#160;&#160;//返回false<br />&#160;8、<strong>一个特殊值NaN(非数)</strong>，常发生在类型（String,Boolean等）转换失败时。<br />&#160;&#160;&#160;&#160;&#160; <font color="#ff0000"><strong>注意：</strong></font><font color="#0000ff">它与自身不相等。如alert(NaN==NaN)输出false。</font>所以不推荐使用NaN本身，而使用isNaN来判断。alert(isNaN("blue"))输出true，alert(isNaN("123"))输出false&#160;  
<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/21590.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2007-01-06 01:11 <a href="http://www.cnitblog.com/yemoo/archive/2007/01/06/21590.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript之内存释放（推荐）【摘自Oscar's 牛牛】</title><link>http://www.cnitblog.com/yemoo/archive/2006/11/23/19550.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Thu, 23 Nov 2006 13:00:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2006/11/23/19550.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/19550.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2006/11/23/19550.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/19550.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/19550.html</trackback:ping><description><![CDATA[ <script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script> <div class="tit">JavaScript之内存释放（推荐）</div>
  <div class="date">2006年11月17日 星期五 上午 08:58</div>
  <table style="TABLE-LAYOUT: fixed">
    <tbody>
      <tr>
        <td>
          <div class="cnt">网络上流传的关于JS释放内存的方式~ 大概就是只说过。将变量使用以后设置为 null,但是IE的GC是当鼠标点击最小化按钮时发生~~ 也就是说我们从程序上看已经释放了内存其实之前更本没有释放~~~<br /><br />研究 jsvm 的时候，发现 js.lang.System 里面定义了 gc() 方法<br /><br />System.gc = function ()<br />{<br />　　if (System.isIeBrowser())<br />　　{<br />　　　　CollectGarbage();<br />　　　　setTimeout("CollectGarbage();", 1);<br />　　}<br />}<br /><br />CollectGarbage() 好像是ie特有的一个函数，为什么通过setTimeout的方式调用，可能是防止上下文中的过程变量仍然有效的原因吧！</div>
        </td>
      </tr>
    </tbody>
  </table>
 <script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/19550.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2006-11-23 21:00 <a href="http://www.cnitblog.com/yemoo/archive/2006/11/23/19550.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发现一个有用的js事件onpropertychange</title><link>http://www.cnitblog.com/yemoo/archive/2006/07/07/13366.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Fri, 07 Jul 2006 11:33:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2006/07/07/13366.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/13366.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2006/07/07/13366.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/13366.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/13366.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script><br><br>这个事件以前没有见到过,今天在蓝色经典上看到了.当一个对象的属性值发生变化时激活此事件.可以用在各种html表单中,如来监视其值的变化.<br>如:<br>&lt;textarea cols="100" rows="15" onpropertychange="alert(this.value)"&gt;&lt;/textarea&gt;<p> <script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/13366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2006-07-07 19:33 <a href="http://www.cnitblog.com/yemoo/archive/2006/07/07/13366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>window.showModalDialog使用手册【shawnyoung的博客】</title><link>http://www.cnitblog.com/yemoo/archive/2006/07/02/13152.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Sun, 02 Jul 2006 11:56:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2006/07/02/13152.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/13152.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2006/07/02/13152.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/13152.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/13152.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script>
showModalDialog() (IE 4+ 支持)<br>showModelessDialog() (IE 5+ 支持)<br>window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。<br>window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。
<p><font color=#0066ff>使用方法：</font><br>vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])<br>vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])</p>
<p><font color=#0066ff>参数说明：</font><br>sURL--必选参数，类型：字符串。用来指定对话框要显示的文档的URL。<br>vArguments--可选参数，类型：变体。用来向对话框传递参数。传递的参数类型不限，包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。<br>sFeatures--可选参数，类型：字符串。用来描述对话框的外观等信息，可以使用以下的一个或几个，用分号&#8220;;&#8221;隔开。<br>1.dialogHeight :对话框高度，不小于１００px，ＩＥ４中dialogHeight 和 dialogWidth 默认的单位是em，而ＩＥ５中是px，为方便其见，在定义modal方式的对话框时，用px做单位。<br>2.dialogWidth: 对话框宽度。<br>3.dialogLeft: 离屏幕左的距离。<br>4.dialogTop: 离屏幕上的距离。<br>5.center: {yes | no | 1 | 0 }：窗口是否居中，默认yes，但仍可以指定高度和宽度。<br>6.help: {yes | no | 1 | 0 }：是否显示帮助按钮，默认yes。<br>7.resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。<br>8.status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。<br>9.scroll:{ yes | no | 1 | 0 | on | off }：指明对话框是否显示滚动条。默认为yes。<br>下面几个属性是用在HTA中的，在一般的网页中一般不使用。<br>10.dialogHide:{ yes | no | 1 | 0 | on | off }：在打印或者打印预览时对话框是否隐藏。默认为no。<br>11.edge:{ sunken | raised }：指明对话框的边框样式。默认为raised。<br>12.unadorned:{ yes | no | 1 | 0 | on | off }：默认为no。</p>
<p><font color=#0066ff>参数传递：</font><br>1.要想对话框传递参数，是通过vArguments来进行传递的。类型不限制，对于字符串类型，最大为4096个字符。也可以传递对象，例如：<br>parent.htm<br>代码运行框：<br><font style="BACKGROUND-COLOR: #ffff99" color=#0000ff>&lt;script&gt;<br>var obj = new Object();<br>obj.name="51js";<br>window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");<br>&lt;/script&gt;<br>modal.htm<br>&lt;script&gt;<br>var obj = window.dialogArguments<br>alert("您传递的参数为：" + obj.name)<br>&lt;/script&gt;</font></p>
<p><br>2.可以通过window.returnValue向打开对话框的窗口返回信息，当然也可以是对象。例如：<br>代码运行框：<br><font style="BACKGROUND-COLOR: #ffcc66" color=#0000ff>&lt;script&gt;<br>str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");<br>alert(str);<br>&lt;/script&gt;<br>modal.htm<br>&lt;script&gt;<br>window.returnValue="/";<br>&lt;/script&gt;</font></p>
<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/13152.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2006-07-02 19:56 <a href="http://www.cnitblog.com/yemoo/archive/2006/07/02/13152.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript事件查询综合【摘自World Cup Crazy 5D Home】</title><link>http://www.cnitblog.com/yemoo/archive/2006/07/02/13149.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Sun, 02 Jul 2006 11:21:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2006/07/02/13149.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/13149.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2006/07/02/13149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/13149.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/13149.html</trackback:ping><description><![CDATA[ <script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script>
 <p>javascript事件查询综合 </p>
  <table cellspacing="1" cellpadding="4" width="460" border="0">
    <tbody>
      <tr>
        <td width="52%" bgcolor="#ff9900">
          <strong>功能函数</strong>
        </td>
        <td width="48%" bgcolor="#ff9900">
          <strong>描述</strong>
        </td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">click() </td>
        <td bgcolor="#f2f2f2">对象.click() 使对象被点击</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">closed</td>
        <td bgcolor="#f2f2f2">对象.closed 对象窗口是否已关闭true/false</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">clearTimeout(对象)</td>
        <td bgcolor="#f2f2f2">清除已设置的setTimeout对象</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">clearInterval(对象)</td>
        <td bgcolor="#f2f2f2">清除已设置的setInterval对象</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">confirm("提示信息")</td>
        <td bgcolor="#f2f2f2">弹出确认框，确定返回true取消返回false</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">cursor:样式</td>
        <td bgcolor="#f2f2f2">更改鼠标样式 hand crosshair text wait help default auto e/s/w/n-resize</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">event.clientX</td>
        <td bgcolor="#f2f2f2">返回最后一次点击鼠标X坐标值</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">event.clientY</td>
        <td bgcolor="#f2f2f2">返回最后一次点击鼠标Y坐标值</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">event.offsetX</td>
        <td bgcolor="#f2f2f2">返回当前鼠标悬停X坐标值</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">event.offsetY</td>
        <td bgcolor="#f2f2f2">返回当前鼠标悬停Y坐标值</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.lastModified</td>
        <td bgcolor="#f2f2f2">网页最后一次更新时间</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.ondblclick=x</td>
        <td bgcolor="#f2f2f2">当双击鼠标产生事件</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.onmousedown=x</td>
        <td bgcolor="#f2f2f2">单击鼠标键产生事件</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.body.scrollTop</td>
        <td bgcolor="#f2f2f2">返回和设置当前竖向滚动条的坐标值，须与函数配合</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.body.scrollLeft</td>
        <td bgcolor="#f2f2f2">返回和设置当前横向滚动务的坐标值，须与函数配合</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.title </td>
        <td bgcolor="#f2f2f2">document.title="message",当前窗口的标题栏文字</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.bgcolor</td>
        <td bgcolor="#f2f2f2">document.bgcolor="颜色值";改变窗口背景颜色</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.Fgcolor</td>
        <td bgcolor="#f2f2f2">document.Fgcolor="颜色值";改变正文颜色</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.linkcolor</td>
        <td bgcolor="#f2f2f2">document.linkcolor="颜色值";改变超联接颜色</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.alinkcolor</td>
        <td bgcolor="#f2f2f2">document.alinkcolor="颜色值";改变正点击联接的颜色</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.VlinkColor</td>
        <td bgcolor="#f2f2f2">document.VlinkColor="颜色值";改变已访问联接的颜色</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.forms.length</td>
        <td bgcolor="#f2f2f2">返回当前页form表单数</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.anchors.length</td>
        <td bgcolor="#f2f2f2">返回当前页锚的数量</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.links.length</td>
        <td bgcolor="#f2f2f2">返回当前页联接的数量</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.onmousedown=x</td>
        <td bgcolor="#f2f2f2">单击鼠标触发事件</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">document.ondblclick=x</td>
        <td bgcolor="#f2f2f2">双击鼠标触发事件</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.status</td>
        <td bgcolor="#f2f2f2">将状态栏设置默认显示</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">&#160;</td>
        <td bgcolor="#f2f2f2">&#160;</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">isNumeric</td>
        <td bgcolor="#f2f2f2">判断是否是数字</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">innerHTML</td>
        <td bgcolor="#f2f2f2">xx=对象.innerHTML, 输入某对象标签中的html源代码</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">innerText</td>
        <td bgcolor="#f2f2f2">divid.innerText=xx, 将以div定位以id命名的对象值设为XX</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">location.reload()</td>
        <td bgcolor="#f2f2f2">使本页刷新，target可等于一个刷新的网页</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">Math.random()</td>
        <td bgcolor="#f2f2f2">随机涵数,只能是0到1之间的数,如果要得到其它数,可以为*10,再取整</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">Math.floor(number)</td>
        <td bgcolor="#f2f2f2">将对象number转为整数，舍取所有小数</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">Math.min(1,2)</td>
        <td bgcolor="#f2f2f2">返回1,2哪个小</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">Math.max(1,2)</td>
        <td bgcolor="#f2f2f2">返回1,2哪个大</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">&#160;</td>
        <td bgcolor="#f2f2f2">&#160;</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">navigator.appName</td>
        <td bgcolor="#f2f2f2">返回当前浏览器名称</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">navigator.appVersion</td>
        <td bgcolor="#f2f2f2">返回当前浏览器版本号</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">navigator.appCodeName</td>
        <td bgcolor="#f2f2f2">返回当前浏览器代码名字</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">navigator.userAgent</td>
        <td bgcolor="#f2f2f2">返回当前浏览器用户代标志</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">onsubmit</td>
        <td bgcolor="#f2f2f2">onsubmit="return(xx())", 使用函数返回值</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">opener</td>
        <td bgcolor="#f2f2f2">opener.document.对象, 控制原打开窗体对象</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">prompt</td>
        <td bgcolor="#f2f2f2">xx=window.prompt("提示信息","预定值"); 输入语句</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">parent</td>
        <td bgcolor="#f2f2f2">parent.框架名.对象, 控制框架页面</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">return</td>
        <td bgcolor="#f2f2f2">return false 返回值</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">random</td>
        <td bgcolor="#f2f2f2">随机参数（0至1之间）</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">reset()</td>
        <td bgcolor="#f2f2f2">form.reset(), 使form表单内的数据重置</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">split()</td>
        <td bgcolor="#f2f2f2">string.split("") 将string对象字符以逗号隔开</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">submit()</td>
        <td bgcolor="#f2f2f2">form对象.submit(), 使form对象提交数据</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">charAt()</td>
        <td bgcolor="#f2f2f2">charAt(x)对象,反回指定对象的第多少位的字母</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">lastIndexOf("string")</td>
        <td bgcolor="#f2f2f2">从右到左询找指定字符，没有返回-1</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">indexOf("string")</td>
        <td bgcolor="#f2f2f2">从左到右询找指定字符，没有返回-1</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">LowerCase()</td>
        <td bgcolor="#f2f2f2">将对象全部转为小写</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">UpperCase()</td>
        <td bgcolor="#f2f2f2">将对象全部转为大写</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">substring(0,5)</td>
        <td bgcolor="#f2f2f2">string.substring(x,x), 返回对象中从0到5的字符</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">setTimeout("function",time)</td>
        <td bgcolor="#f2f2f2">设置一个超时对象</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">setInterval("function",time)</td>
        <td bgcolor="#f2f2f2">设置一个超时对象</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">toLocaleString()</td>
        <td bgcolor="#f2f2f2">x.toLocaleString(), 从x时间对象中获取时间，以字符串型式存在</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">typeof(变量名)</td>
        <td bgcolor="#f2f2f2">检查变量的类型，值有：String, Boolean, Object, Function, Underfined</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.event.button==1/2/3</td>
        <td bgcolor="#f2f2f2">鼠标键左键等于1, 右键等于2两个键一起按为3</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.screen.availWidth</td>
        <td bgcolor="#f2f2f2">返回当前屏幕宽度(空白空间)</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.screen.availHeight</td>
        <td bgcolor="#f2f2f2">返回当前屏幕高度(空白空间)</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.screen.width</td>
        <td bgcolor="#f2f2f2">返回当前屏幕宽度(分辨率值)</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.screen.height</td>
        <td bgcolor="#f2f2f2">返回当前屏幕高度(分辨率值)</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.document.body.offsetHeight</td>
        <td bgcolor="#f2f2f2">返回当前网页高度</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.document.body.offsetWidth</td>
        <td bgcolor="#f2f2f2">返回当前网页宽度</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.resizeTo(0,0)</td>
        <td bgcolor="#f2f2f2">将窗口设置宽高</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.moveTo(0,0)</td>
        <td bgcolor="#f2f2f2">将窗口移到某位置</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.focus()</td>
        <td bgcolor="#f2f2f2">使当前窗口获得焦点</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.scroll(x,y)</td>
        <td bgcolor="#f2f2f2">窗口滚动条坐标，y控制上下移动，须与函数配合</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">window.open()</td>
        <td bgcolor="#f2f2f2">window.open("地址","名称","属性")</td>
      </tr>
    </tbody>
  </table>
  <p>
  </p>
  <p>
  </p>
  <table cellspacing="1" cellpadding="4" width="460" border="0">
    <tbody>
      <tr>
        <td width="52%" bgcolor="#ff9900">
          <strong>属性</strong>
        </td>
        <td width="48%" bgcolor="#ff9900">
          <strong>描述</strong>
        </td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">toolbar</td>
        <td bgcolor="#f2f2f2">工具栏</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">location</td>
        <td bgcolor="#f2f2f2">地址栏</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">directions，status</td>
        <td bgcolor="#f2f2f2">状态栏</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">menubar</td>
        <td bgcolor="#f2f2f2">菜单栏</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">scrollbar</td>
        <td bgcolor="#f2f2f2">滚动条</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">resizable</td>
        <td bgcolor="#f2f2f2">改变大小</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">width</td>
        <td bgcolor="#f2f2f2">宽</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">height</td>
        <td bgcolor="#f2f2f2">高</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">fullscreen</td>
        <td bgcolor="#f2f2f2">全屏</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">scrollbars</td>
        <td bgcolor="#f2f2f2">全屏时无滚动条无参数</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">channelmode</td>
        <td bgcolor="#f2f2f2">宽屏</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">left</td>
        <td bgcolor="#f2f2f2">打开窗口x坐标</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">top</td>
        <td bgcolor="#f2f2f2">打开窗口y坐标</td>
      </tr>
      <tr>
        <td bgcolor="#cccc66" colspan="2">事例：window.location = &#8216;view-source:&#8217; + window.location.href 应用事件查看网页源代码;</td>
      </tr>
    </tbody>
  </table>
  <p>
  </p>
  <p>
  </p>
  <table cellspacing="1" cellpadding="4" width="460" border="0">
    <tbody>
      <tr>
        <td width="52%" bgcolor="#ff9900">
          <strong>日期函数</strong>
        </td>
        <td width="48%" bgcolor="#ff9900">
          <strong>描述</strong>
        </td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">a=new Date()</td>
        <td bgcolor="#f2f2f2">创建a为一个新的时期对象</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">y2=a.getYear()</td>
        <td bgcolor="#f2f2f2">获取年份值，两位数年份</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">y4=a.getFullYear()</td>
        <td bgcolor="#f2f2f2">获取全年份数，四位数年份</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">m=a.getMonth()</td>
        <td bgcolor="#f2f2f2">获取月份值</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">d=a.getDate()</td>
        <td bgcolor="#f2f2f2">获取日期值</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">w=a.getDay()</td>
        <td bgcolor="#f2f2f2">获取当前星期值</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">h=a.getHours()</td>
        <td bgcolor="#f2f2f2">获取当前小时数</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">i=a.getMinutes()</td>
        <td bgcolor="#f2f2f2">获取当前分钟数</td>
      </tr>
      <tr>
        <td bgcolor="#e2e2e2">s=a.getSeconds()</td>
        <td bgcolor="#f2f2f2">获取当前秒钟数</td>
      </tr>
    </tbody>
  </table>
  <p>对象.style.fontSize="文字大小";<br />单位：mm/cm/in英寸/pc帕/pt点/px象素/em文字高<br />1in=1.25cm<br />1pc=12pt<br />1pt=1.2px(800*600分辩率下)</p>
  <p>文本字体属性：<br />fontSize大小<br />family字体<br />color颜色<br />fontStyle风格，取值为normal一般,italic斜体,oblique斜体且加粗<br />fontWeight加粗,取值为100到900不等,900最粗,light,normal,bold<br />letterSpacing间距,更改文字间距离,取值为,1pt,10px,1cm<br />textDecoration:文字修饰;取值,none不修饰,underline下划线,overline上划线<br />background:文字背景颜色,<br />backgroundImage:背景图片,取值为图片的插入路径</p>
  <p>点击网页正文函数调用触发器：</p>
  <p>1.onClick 当对象被点击<br />2.onLoad 当网页打开,只能书写在body中<br />3.onUnload 当网页关闭或离开时,只能书写在body中<br />4.onmouseover 当鼠标悬于其上时<br />5.onmouseout 当鼠标离开对象时<br />6.onmouseup 当鼠标松开<br />7.onmousedown 当鼠标按下键<br />8.onFocus 当对象获取焦点时<br />9.onSelect 当对象的文本被选中时<br />10.onChange 当对象的内容被改变<br />11.onBlur 当对象失去焦点<br />onsubmit=return(ss())表单调用时返回的值</p>
  <p>直线 border-bottom:1x solid black<br />虚线 border-bottom:1x dotted black<br />点划线 border-bottom:2x dashed black<br />双线 border-bottom:5x double black<br />槽状 border-bottom:1x groove black<br />脊状 border-bottom:1x ridge black</p>
  <p>1.边缘高光glow(color=颜色,strength=亮光大小)</p>
 <script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/13149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2006-07-02 19:21 <a href="http://www.cnitblog.com/yemoo/archive/2006/07/02/13149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS中的setTimeout和setInterval的区别(终于搞清楚了)</title><link>http://www.cnitblog.com/yemoo/archive/2006/06/29/13078.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Thu, 29 Jun 2006 13:49:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2006/06/29/13078.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/13078.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2006/06/29/13078.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/13078.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/13078.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script><br /><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 一直知道js里有这两个函数，而且好象都是用来定时的，以为没有什么区别，但发现两个函数用的地方都不少。今天在网上查找了下相关的资料终于明白了。<br /><p>简单说来:<br />setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression</p><p>setInterval(expression,delayTime),每个DelayTime,都将执行Expression.<br />常常可用于刷新表达式.<br /><br />下面偶自己写了一个例子更容易帮助理解。<br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">DOCTYPE&#160;html&#160;PUBLIC&#160;"-//W3C//DTD&#160;XHTML&#160;1.0&#160;Transitional//EN"<br />&#160;&#160;&#160;&#160;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html&#160;</span><span style="COLOR: #ff0000">xmlns</span><span style="COLOR: #0000ff">="http://www.w3.org/1999/xhtml"</span><span style="COLOR: #ff0000">&#160;xml:lang</span><span style="COLOR: #0000ff">="en"</span><span style="COLOR: #ff0000">&#160;lang</span><span style="COLOR: #0000ff">="en"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />&#160;&#160;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&#160;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="a"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&#160;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="b"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&#160;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text/javascript"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br />&#160;&#160;&#160;&#160;setTimeout(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.getElementById('a').innerHTML=new&#160;Date().getSeconds();</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">1000</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />&#160;&#160;&#160;&#160;setInterval(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.getElementById('b').innerHTML=new&#160;Date().getSeconds();</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">1000</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />&#160;&#160;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span></div><p>运行会发现，a中的内容更新一次则不在变动，而b中的内容则随着时间的变化一直变化。<br />setInterval会不停的循环执行表达式。<br /><br /></p> 
<p><script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/13078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2006-06-29 21:49 <a href="http://www.cnitblog.com/yemoo/archive/2006/06/29/13078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DHTML 各种 HTML 对象常用属性(摘自：林毅鹏的BLOG)</title><link>http://www.cnitblog.com/yemoo/archive/2006/06/28/13018.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Wed, 28 Jun 2006 15:06:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2006/06/28/13018.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/13018.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2006/06/28/13018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/13018.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/13018.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script>  <p>标签属性 属性 描述</p>
  <p>ALIGN align 设置或获取表格排列。<br />ALLOWTRANSPARENCY allowTransparency 设置或获取对象是否可为透明。<br />APPLICATION APPLICATION 表明对象的内容是否为 HTML 应用程序(HTA)，以便免除浏览器安全模式。<br />ATOMICSELECTION 指定元素及其内容是否可以一不可见单位统一选择。<br />BEGIN begin 设置或获取时间线在该元素上播放前的延迟时间。<br />BORDER border 设置或获取框架间的空间，包括 3D 边框。<br />canHaveChildren 获取表明对象是否可以包含子对象的值。<br />canHaveHTML 获取表明对象是否可以包含丰富的 HTML 标签的值。<br />CLASS className 设置或获取对象的类。<br />contentWindow 获取指定的 frame 或 iframe 的 window 对象。<br />DATAFLD dataFld 设置或获取由 dataSrc 属性指定的绑定到指定对象的给定数据源的字段。<br />DATASRC dataSrc 设置或获取用于数据绑定的数据源。<br />disabled 获取表明用户是否可与该对象交互的值。<br />END end 设置或获取表明元素结束时间的值，或者元素设置为重复的简单持续终止时间。<br />firstChild 获取对象的 childNodes 集合的第一个子对象的引用。<br />FRAMEBORDER frameBorder 设置或获取是否显示框架的边框。<br />hasMedia 获取一个表明元素是否为 HTML+TIME 媒体元素的 Boolean 值。<br />HEIGHT height 设置或获取对象的高度。<br />HIDEFOCUS hideFocus 设置或获取表明对象是否显式标明焦点的值。<br />HSPACE hspace 设置或获取对象的水平边距。<br />ID id 获取标识对象的字符串。<br />innerText 设置或获取位于对象起始和结束标签内的文本。<br />isContentEditable 获取表明用户是否可编辑对象内容的值。<br />isDisabled 获取表明用户是否可与该对象交互的值。<br />isMultiLine 获取表明对象的内容是包含一行还是多行的值。<br />isTextEdit 获取是否可使用该对象创建一个 TextRange 对象。<br />LANG lang 设置或获取要使用的语言。<br />LANGUAGE language 设置或获取当前脚本编写用的语言。<br />lastChild 获取该对象 childNodes 集合中最后一个子对象的引用。<br />longDesc 设置或获取对象长描述的统一资源标识符(URI)。<br />MARGINHEIGHT marginHeight 设置或获取显示框架中文本之前的上下边距高度。<br />MARGINWIDTH marginWidth 设置或获取显示框架中文本之前的左右边距宽度。NAME name 设置或获取框架的名称。<br />nextSibling 获取对此对象的下一个兄弟对象的引用。<br />nodeName 获取特定结点类型的名称。<br />nodeType 获取所需结点的类型。<br />nodeValue 设置或获取结点的值。<br />offsetHeight 获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度。<br />offsetLeft 获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置。<br />offsetParent 获取定义对象 offsetTop 和 offsetLeft 属性的容器对象的引用。<br />offsetTop 获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置。<br />offsetWidth 获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的宽度。<br />onOffBehavior 获取表明指定的 Microsoft&#174; DirectAnimation&#174; 行为是否正在运行的对象。<br />outerHTML 设置或获取对象及其内容的 HTML 形式。<br />outerText 设置或获取对象的文本。<br />ownerDocument 设置或获取结点关联的 document 对象。<br />parentElement 获取对象层次中的父对象。<br />parentNode 获取文档层次中的父对象。<br />parentTextEdit 获取文档层次中可用于创建包含原始对象的 TextRange 的容器对象。<br />previousSibling 获取对此对象的上一个兄弟对象的引用。<br />readyState 获取对象的当前状态。<br />readyState 获取表明对象当前状态的值。<br />recordNumber 获取数据集中生成对象的原始记录。<br />scopeName 获取为该元素定义的命名空间。<br />SCROLLING scrolling 设置或获取框架是否可被滚动。<br />SECURITY SECURITY 获取表明 frame 或 iframe 的源文件是否应用了特定的安全限制的值。<br />sourceIndex 获取对象在源序中的依次位置，即对象出现在 document 的 all 集合中的顺序。<br />SRC src 设置或获取要由对象装入的 URL。<br />STYLE 为该设置元素设置内嵌样式。<br />SYNCMASTER syncMaster 设置或获取时间容器是否必须在此元素上同步回放。<br />SYSTEMBITRATE 获取系统中大约可用带宽的 bps。<br />SYSTEMCAPTION 表明是否要显示文本来代替演示的的音频部分。<br />SYSTEMLANGUAGE 表明是否在用户计算机上的选项设置中选中了给定语言。<br />SYSTEMOVERDUBORSUBTITLE 指定针对那些正在观看演示但对被播放的音频所使用的语言并不熟悉的用户来说是否要渲染配音或字幕。<br />TABINDEX tabIndex 设置或获取定义对象的 Tab 顺序的索引。<br />tagName 获取对象的标签名称。<br />tagUrn 设置或获取在命名空间声明中指定的统一资源名称(URN)。<br />TIMECONTAINER timeContainer 设置或获取与元素关联的时间线类型。<br />TITLE title 设置或获取对象的咨询信息(工具提示)。<br />uniqueID 获取为对象自动生成的唯一标识符。<br />UNSELECTABLE 指定该元素不可被选中。<br />VSPACE vspace 设置或获取对象的垂直边距。<br />WIDTH width 设置或获取对象的宽度。</p>
 <script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/13018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2006-06-28 23:06 <a href="http://www.cnitblog.com/yemoo/archive/2006/06/28/13018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript的Event对象详解[收集整理]</title><link>http://www.cnitblog.com/yemoo/archive/2006/06/21/12632.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Wed, 21 Jun 2006 08:14:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2006/06/21/12632.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/12632.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2006/06/21/12632.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/12632.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/12632.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script><br><br>偶在网上看相关文章然后自己整理的一个对event对象详解教程。 <br /><br /><div style="BORDER-RIGHT: #ccc 1px dotted; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px dotted; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ccc 1px dotted; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px dotted"><p>Javascript的Event对象用来描述Javascript的事件，它主要作用于<strong><font style="BACKGROUND-COLOR: #ffffff" color="#ff0000">IE4和NN4</font></strong>以后的各个浏览器版本中。Event代表事件状态，如事件发生的元素，键盘状态，鼠标位置和鼠标按钮状态。一旦事件发生,便会生成Event对象，如单击一个按钮，浏览器的内存中就产生相应的 event对象。</p><p>IE对事件的引用</p><p>在IE4以上版本中，event对象作为window属性访问：window.event。其中引用的window部分是可选的．因此脚本就像全局引用一样来对待event对象：</p><p>event．propertyName</p><p><strong><font color="#0000ff">event对象成员表：</font></strong></p><p>下面的表格列出了 event 对象引出的成员。</p><p><font color="#006400">对象</font><br />dataTransfer 提供了对于预定义的剪贴板格式的访问，以便在拖曳操作中使用。 </p><p><font color="#006400">集合</font><br />bookmarks 返回捆绑到当前事件所影响的行上的 ActiveX&amp;reg; 数据对象(ADO)书签的集合。 <br />boundElements 返回页面上所有绑定到给定数据集的所有元素的集合。 </p><p><font color="#006400">属性<br /></font>Abstract 使用 event 对象获取高级流重定向器(ASX)文件中项目横幅的 Abstract 内容。 <br />altKey 设置或获取 Alt 键的状态。 检索ALT键的当前状态可能的值 true为关闭,false为不关闭<br />altLeft 设置或获取左 Alt 键的状态。 <br />Banner 使用 event 对象获取高级流重定向器(ASX)文件中项目的 Banner 内容。 <br />button 设置或获取用户所按的鼠标按钮。 <br />可能的值：<br />0 没按键<br />1 按左键<br />2 按右键<br />3 按左右键<br />4 按中间键<br />5 按左键和中间键<br />6 按右键和中间键<br />7 按所有的键<br /><br />cancelBubble 设置或获取当前事件是否要在事件句柄中向上冒泡。 <br />设置或检索当前事件是否将事件句柄起泡可能的值： false 启用起泡true 取消该事件起泡<br /><br />clientX 设置或获取鼠标指针位置相对于窗口客户区域的 x 坐标，<br />其中客户区域不包括窗口自身的控件和滚动条。 <br />属性为只读，没有默认值。<br />clientY 设置或获取鼠标指针位置相对于窗口客户区域的 y 坐标，<br />其中客户区域不包括窗口自身的控件和滚动条。 <br />属性为只读，没有默认值。<br />clientX,clientY不考虑文档滚动,如果要把窗体滚动计在内,加上document.body.scrollLeft,document.body.scrollTop即可<br /><br />contentOverflow 获取表明文档处理当前 LayoutRect 对象后是否包含附加的内容。 <br />ctrlKey 设置或获取 Ctrl 键的状态。 ctrlKey 检索CTRL键的当前状态可能的值 true为关闭false为不关闭<br />ctrlLeft 设置或获取左 Ctrl 键的状态。 <br />dataFld 设置或获取 oncellchange 事件影响的数据列。 <br />fromElement 设置或获取事件发生时激活或鼠标将要离开的对象。 <br /><br />keyCode 设置或获取与导致事件的按键关联的 Unicode 按键代码。 <br />该属性与onkeydown onkeyup onkeypress一起使用如果没有引发事件的关键字，则该值为0，<br />用String.fromCharCode()可将字符代码转换成字符串.<br /><br />MoreInfo 通过 event 对象获取高级流重定向器(ASX)文件中项目横幅的 MoreInfo 内容。 <br />nextPage 获取打印模板中下页的位置。 <br />offsetX 设置或获取鼠标指针位置相对于触发事件的对象的 x 坐标。 <br />offsetY 设置或获取鼠标指针位置相对于触发事件的对象的 y 坐标。 <br />propertyName 设置或获取对象上发生更改的属性名称。 <br />qualifier 设置或获取由数据源对象提供的数据成员的名称。 <br />reason 设置或获取数据源对象的数据传输结果。 <br />可能的值：<br />0 数据传输成功<br />1 数据传输失败<br />2 数据传输错误<br /><br />recordset 从数据源对象设置或获取对默认数据集的引用。 该特性为只读<br />repeat 获取 onkeydown 事件是否正在重复。 该属性只有在onkeydown事件重复时才返回true<br />returnValue 设置或获取事件的返回值。 <br />可能的值：<br />true 事件中的值被返回<br />false 源对象上事件的默认操作被取消<br /><br />saveType 当 oncontentsave 触发时获取剪贴板类型。 <br /><br />screenX 设置或获取获取鼠标指针位置相对于用户屏幕的 x 坐标。 <br />screenY 设置或获取鼠标指针位置相对于用户屏幕的 y 坐标。 <br />（即鼠标指针相对于用户显示器的左上角的XY坐标的值）<br /><br />shiftKey 设置或获取 Shift 键的状态。 可能的值 true为关闭,false为不关闭<br /><br />shiftLeft 设置或获取左 Shift 键的状态。 <br />srcElement 设置或获取触发事件的对象。 （发生事件的文档元素）<br />srcFilter 设置或获取触发 onfilterchange 事件的滤镜对象。 <br />srcUrn 获取触发事件的行为的统一资源名称(URN)。 <br />除非下面两个条件都为真，否则该特性被设置为null<br />1.行为被附加到触发事件的要素上<br />2.在前面的项目符号中定义的行为己指定了一个URN标识符和己触发的事件<br /><br />toElement 设置或获取用户要将鼠标指针移动指向的对象的引用。 <br />type 从 event 对象中获取事件名称。 如click,mouseover<br />wheelDelta 设置或获取滚轮按钮滚动的距离和方向。 <br />x 设置或获取鼠标指针位置相对于父文档的 x 像素坐标。 <br />y 设置或获取鼠标指针位置相对于父文档的 y 像素坐标。 </p><p><br />注释</p><p>event 对象仅在事件中可用──这意味着，你可以在事件句柄中使用该对象，但不能在其它代码中使用。</p><p>尽管所有事件属性都可通过所有的 event 对象访问，但是在某些事件中某些属性可能无意义。例如，fromElement 和 toElement 属性仅当处理 onmouseover 和 onmouseout 事件时有意义。</p><p>在 Microsoft Visual Basic&amp;reg; 脚本版本(VBScript)中，你必须通过 window 对象访问 event 对象。</p><p>此对象在 Microsoft&amp;reg; Internet Explorer 4.0 的脚本中可用。</p><p>示例</p><p>下面的例子使用了 event 对象来决定用户单击的位置是否在链接上，并且避免在 SHIFT 键按下时导航到链接。</p><p>&lt;HTML&gt;<br />&lt;HEAD&gt;&lt;TITLE&gt;取消链接&lt;/TITLE&gt;<br />&lt;SCRIPT LANGUAGE="JScript"&gt;<br />function cancelLink() {<br />if (window.event.srcElement.tagName == "A" &amp;&amp; window.event.shiftKey) <br />window.event.returnValue = false;<br />}<br />&lt;/SCRIPT&gt;<br />&lt;BODY onclick="cancelLink()"&gt;</p><p><strong><font color="#ff0000">要使Event对象各个属性或方法都能实现，应选择IE5.5以上版本。</font></strong></p></div> <p><script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/12632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2006-06-21 16:14 <a href="http://www.cnitblog.com/yemoo/archive/2006/06/21/12632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于cookie设定的几个小问题。</title><link>http://www.cnitblog.com/yemoo/archive/2006/06/20/12558.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Tue, 20 Jun 2006 07:24:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2006/06/20/12558.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/12558.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2006/06/20/12558.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/12558.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/12558.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script><br><br>1,用JS设定cookie方法是：document.cookie="xxx".<br />2,注意这样一次只能设定一个cookie变量值，如document.cookie="a=1;b=2;expires=xx";这样无法正常写入b的值，正确的写入方法应该是<br />document.cookie="a=1";<br />document.cookie="b=2";<br />一般设定cookie都专门写一个函数调用。如setCookie(name,value,expires).<br />3,读取cookie值时用分号&#8220;;&#8221;分割，如documen.cookie.split(";").因为cookie是用分号来分隔变量的。<br /><br /><strong><font color="#ff0000">测试代码：</font></strong><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">DOCTYPE&#160;html&#160;PUBLIC&#160;"-//W3C//DTD&#160;XHTML&#160;1.0&#160;Transitional//EN"<br />&#160;&#160;&#160;&#160;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html&#160;</span><span style="COLOR: #ff0000">xmlns</span><span style="COLOR: #0000ff">="http://www.w3.org/1999/xhtml"</span><span style="COLOR: #ff0000">&#160;xml:lang</span><span style="COLOR: #0000ff">="en"</span><span style="COLOR: #ff0000">&#160;lang</span><span style="COLOR: #0000ff">="en"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br />&#160;&#160;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&#160;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="a"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&#160;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text/javascript"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;setCookie(name,value){<br />&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;cookieValue</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">name</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">value;<br />&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;expires</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;Date(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">2006</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">07</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">01</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).toGMTString();<br />&#160;&#160;&#160;&#160;cookieValue</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">cookieValue</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;expires=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">expires;<br />&#160;&#160;&#160;&#160;document.cookie</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">cookieValue;<br />&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">""</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />}<br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;getCookie(name){<br />&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;search</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">name</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(document.cookie.length</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">){<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;offset</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.cookie.indexOf(search);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;offset</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">search.length;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.cookie.indexOf(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,offset);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(end</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">==-</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">1</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;end</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.cookie.length;<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;document.cookie.substring(offset,end);<br /><br />&#160;&#160;&#160;&#160;}</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">else</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">""</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />}<br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;getAllCookie(){<br />&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;allCookie</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.cookie;<br />&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;cookie</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;Array();<br />&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(allCookie.length</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">){<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;cookie</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">allCookie.split(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#160;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">cookie.length;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;alert(cookie[i]);<br />&#160;&#160;&#160;&#160;}<br />}<br />setCookie(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">a</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">111</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />setCookie(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">b</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">222</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />setCookie(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">c</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">456</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />alert(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">a=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">getCookie(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">a</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">));<br />alert(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">b=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">getCookie(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">b</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">));<br />alert(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">c=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">getCookie(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">c</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">));<br />alert(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">Now&#160;Call&#160;getAllCookie()</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />getAllCookie();<br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span></div> <p><script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/12558.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2006-06-20 15:24 <a href="http://www.cnitblog.com/yemoo/archive/2006/06/20/12558.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOM 精简知识教程(来源Blueidea)</title><link>http://www.cnitblog.com/yemoo/archive/2006/06/19/12489.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Mon, 19 Jun 2006 04:55:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2006/06/19/12489.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/12489.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2006/06/19/12489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/12489.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/12489.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script><p>先来看一张简单的文档树<br><a class=page href="http://www.98xj1.com/dom/img/nodes1.gif" target=_blank><img alt="click for full size" src="http://www.98xj1.com/dom/img/nodes1.gif" border=0></a><br>很明显树的顶层节点是NodeA节点,接下来可以通过指定的合适节点移动到树中的任何点,结合以下的代码你可以更好的了解这棵树节点间的相互关系:<br>NodeA.firstChild = NodeA1 <br>NodeA.lastChild = NodeA3 <br>NodeA.childNodes.length = 3 <br>NodeA.childNodes［0］ = NodeA1 <br>NodeA.childNodes［1］ = NodeA2 <br>NodeA.childNodes［2］ = NodeA3 <br>NodeA1.parentNode = NodeA <br>NodeA1.nextSibling = NodeA2 <br>NodeA3.prevSibling = NodeA2 <br>NodeA3.nextSibling = null <br>NodeA.lastChild.firstChild = NodeA3a <br>NodeA3b.parentNode.parentNode = NodeA<br><br>DOM定义对操作一个文档对象的节点结构提供了实用的方法,它提供了像执行对象插入,更新,删除,克隆等这些常用的方法。<br>insertBefore()--在参考子节点之前插入一个新的子节点.如果参考的子节点为null,则新的子节点将作为调用节点的最后一个子节点插入。<br>replaceChild()--在childNodes集合种使用指定的newChild来代替oldChild;如果代替成功,则返回oldChild;如果newChild是null,则只需删除oldChild即可。<br>removeChild()--从节点的ChildNodes集合中删除removeChild指定的节点,如果删除成功,则返回删除的子节点。<br>appendChild()--添加一个新节点到childNodes集合的末尾,如果成功,则返回新节点。<br>cloneNode()--创建一个新的、复制的节点,并且如果传入的参数是true时,还将复制子节点,如果节点是一个元素,那么还将复制相应属性,返回新的节点。<br><br>为了在一棵文档树中访问或者建立一个新的节点,可以用下面这些方法:<br>getElementById()<br>getElementsByTagName()<br>createElement()<br>createAttribute()<br>createTextNode()<br>注意:在一个页面中只有一个文档对象,除了getElementsByTagName()外,其它方法均只能通过document.methodName()调用。<br><br>再看一下下面这个例子:<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;p&gt;This is a sample paragraph.&lt;/p&gt;<br>&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br>&lt;!--<br>alert(document.documentElement.lastChild.firstChild.tagName);<br>//--&gt;<br>&lt;/SCRIPT&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br>结果将会显示"P",下面是一些解释<br>document.documentElement - gives the page's HTML tag. <br>lastChild - gives the BODY tag. <br>firstChild - gives the first element in the BODY. <br>tagName - gives that element's tag name, "P" in this case.<br>另一个:<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br><br>&lt;p&gt;This is a sample paragraph.&lt;/p&gt;<br>&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br>&lt;!--<br>alert(document.documentElement.lastChild.firstChild.tagName);<br>//--&gt;<br>&lt;/SCRIPT&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br>这个例子和上面并没有什么大的区别,仅仅是多了一个空行,但是在NS中,会自动为空行加上一个节点所以返回值是"undefined",而在IE中将跳过空行仍然指向P标签。<br><br>更常用的方法:<br>&lt;p id="myParagraph"&gt;This is a sample paragraph.&lt;/p&gt;<br>...<br>alert(document.getElementById("myParagraph").tagName);<br>这种方法你不用关心节点在文档树的哪一个地方,而只要保证在页面中它的ID号是唯一的就可以了。<br><br>接下来一种访问元素节点的方法是document.getElementsByTagName(),它的返回值是一个数组,例如你可以通过下面的例子改变整个页面的连接：<br>var nodeList = document.getElementsByTagName("A");<br>for (var i = 0; i &lt; nodeList.length; i++)<br>nodeList[i].style.color = "#ff0000";<br><br>attribute和attributes<br>attribute对象和元素相关,但是却没有被认为是文档树的一部分,因此属性不能作为子节点集合的一部分来使用。<br>有三种方法可以为元素建立新的属性<br>1.<br>var attr = document.createAttribute("myAttribute");<br>attr.value = "myValue";<br>var el = document.getElementById("myParagraph");<br>el.setAttributeNode(attr);<br>2.<br>var el = document.getElementById("myParagraph");<br>el.setAttribute("myAttribute", "myValue");<br>3.<br>var el = document.getElementById("myParagraph");<br>el.myAttribute = "myValue";<br>你可以在html标签种定义自己的属性:<br>&lt;p id="myParagraph" myAttribute="myValue"&gt;This is a sample paragraph.&lt;/p&gt;<br>...<br>alert(document.getElementById("myParagraph").getAttribute("myAttribute"));<br>返回值将是"myValue".但是请注意这里必须使用getAttribute,而不是AttributeName,因为有一些浏览器并不支持自定义属性。<br><br>attributes也可以被轻易的从一个元素中删除,你可以使用removeAttribute()或者将element.attributeName指向一个null值。<br>通过attributes我们就可以产生一些动态效果：<br>&lt;p id="sample1" align="left"&gt;Text in a paragraph element.&lt;/p&gt;<br>... code for the links ...<br>document.getElementById('sample1').setAttribute('align', 'left');<br>document.getElementById('sample1').setAttribute('align', 'right');<br>另一种:<br>&lt;p id="sample2" style="text-align:left;"&gt;Text in a paragraph<br>element.&lt;/p&gt;<br>... code for the links ...<br>document.getElementById('sample2').style.textAlign = 'left';<br>document.getElementById('sample2').style.textAlign = 'right';<br>跟上面的例子一样,展示了可用通过元素修改style中的属性,甚至是class中的.唯一要提到的是textAlign是从style中的text-align中演变而来的,有一条基本规律,就是style中的属性如果出现-则在dom中将会被去掉并且随后的一个字母将改为大写,还有一点就是如果即使元素中没有style属性,上述例子同样可以使用。<br><br>text nodes:<br>先看一下例子：<br>&lt;p id="sample1"&gt;This is the initial text.&lt;/p&gt;<br>... code for the links ...<br>document.getElementById('sample1').firstChild.nodeValue =<br>'Once upon a time...';<br>document.getElementById('sample1').firstChild.nodeValue =<br>'...in a galaxy far, far away';<br>首先text nodes并没有像elements那样具有id属性,所有它并不能直接通过document.getElementById()或者document.getElementsByTagName()访问<br>看一下下面的结构也许会更明白一些：<br><a class=page href="http://www.98xj1.com/dom/img/nodes2.gif" target=_blank><img alt="click for full size" src="http://www.98xj1.com/dom/img/nodes2.gif" border=0></a><br>可以看出通过document.getElementById('sample1').firstChild.nodeValue就可以读取或者设置text nodes的值了。<br><br>另一个更加复杂一点的例子：<br>&lt;p id="sample2"&gt;This is the &lt;b&gt;initial&lt;/b&gt; text.&lt;/p&gt;<br>它的文档结构<br><a class=page href="http://www.98xj1.com/dom/img/nodes3.gif" target=_blank><img alt="click for full size" src="http://www.98xj1.com/dom/img/nodes3.gif" border=0></a><br>在这里通过document.getElementById('sample1').firstChild.nodeValue讲仅仅改变"This is the"<br>而<strong>initial</strong> text.将不会改变.在这里大家应该看到了它和innerHTML的不同了.当然你也可以这样用：<br>document.getElementById('sample3').firstChild.nodeValue =<br>'&lt;b&gt;Once&lt;/b&gt; upon a time...';<br>document.getElementById('sample3').firstChild.nodeValue =<br>'...in a galaxy &lt;i&gt;far, far&lt;/i&gt; away';<br>其中的html代码将不会被解释,浏览器将把他们当成普通的文本来显示。<br><br>创建和删除text nodes:<br>var myTextNode = document.createTextNode("my text");<br>通过上面的代码你可以创建一个新的text node,但是它并不是文档树的一部分,要让它显示在页面上就必须让它成为文档树中某一个节点的child,因为<br>text nodes不能有儿子,所以你不能将它加入到一个text nodes中,attribute也不属于文档树的一部分,这条路也不行,现在只剩下elements nodes<br>了,以下的例子展示了如何添加和删除一个text node：<br>&lt;p id="sample1"&gt;Initial text within a paragraph element.&lt;/p&gt;<br>... code to add a text node ...<br>var text = document.createTextNode(" new text " + (++counter1));<br>var el = document.getElementById("sample1");<br>el.appendChild(text);<br>... code to remove the last child node ...<br>var el = document.getElementById("sample1");<br>if (el.hasChildNodes())<br>el.removeChild(el.lastChild);<br>增加文本是很容易的,上面的代码建立了一个新的text node并且通过appendChild()方法将其加入到childNodes数组的末尾,并设置了一个counter1的全局变量,利于观察<br>hasChildNodes()的返回值是true or false;用来判断当前节点是否还有child,以阻止当其没有child的时候调用removeChild()产生的错误。<br><br>创建element nodes<br>有了上面的基础,应该更容易理解了,先看一下下面的代码<br>&lt;div id="sample1"&gt;This text is in a DIV element.&lt;/div&gt;<br>... code for the link ...<br>var paraEl, boldEl;<br>paraEl = document.createElement("p");<br>boldEl = document.createElement("b");<br>paraEl.appendChild(document.createTextNode("This is a new paragraph with "));<br>boldEl.appendChild(document.createTextNode("bold"));<br>paraEl.appendChild(boldEl);<br>paraEl.appendChild(document.createTextNode(" text added to the DIV"));<br>document.getElementById("sample1").appendChild(paraEl);<br>你还可以直接为新加的element nodes设置attribute,以下两种都可以:<br>boldEl.style.color = "#ffff00";<br>paraEl.appendChild(boldEl);<br>或者:<br>paraEl.appendChild(boldEl);<br>boldEl.style.color = "#ffff00";<br><br>注:此文主要来自于一些英文资料和身边的一些参考书,如果有错误大家请指出,一起讨论,DOM我一点也不熟。</p><script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/12489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2006-06-19 12:55 <a href="http://www.cnitblog.com/yemoo/archive/2006/06/19/12489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>substring函数详解</title><link>http://www.cnitblog.com/yemoo/archive/2006/06/17/12421.html</link><dc:creator>Yemoo'S JS Blog</dc:creator><author>Yemoo'S JS Blog</author><pubDate>Sat, 17 Jun 2006 07:25:00 GMT</pubDate><guid>http://www.cnitblog.com/yemoo/archive/2006/06/17/12421.html</guid><wfw:comment>http://www.cnitblog.com/yemoo/comments/12421.html</wfw:comment><comments>http://www.cnitblog.com/yemoo/archive/2006/06/17/12421.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/yemoo/comments/commentRss/12421.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yemoo/services/trackbacks/12421.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg1.js"></script><br><br>
<script type="text/javascript"><!--
google_ad_client = "pub-6054586558396945";
google_ad_output = "textlink";
google_ad_format = "ref_text";
google_cpa_choice = "CAAQ9cm1_wEaCP9JLaa_MMm9KOm84YcBMAA";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br><br><font color=#ff0000><strong>首先注意<br></strong><font color=#000000>1,两个S都要小写！<br>2,属于String对象的方法。</font> <br></font>3,索引下标从0开始&nbsp;<br>4,返回一个从start开始到end的字符串，但不包含end索引位置的字符。<br>
<div style="BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 5px; BACKGROUND: #eee; PADDING-BOTTOM: 5px; MARGIN: 5px; BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid">
<h1>substring 方法</h1>
<p>返回位于 <strong>String</strong> 对象中指定位置的子字符串。 </p>
<p><code><em>strVariable</em>.<strong>substring(</strong><em>start</em>, <em>end</em><strong>)</strong></code><br><code>"String Literal".<strong>substring(</strong><em>start</em>, <em>end</em><strong>)</strong></code></p>
<h4>参数</h4>
<p class=dt>start</p>
<p class=indent>指明子字符串的起始位置，该索引从 0 开始起算。</p>
<p class=dt>end</p>
<p class=indent>指明子字符串的结束位置，该索引从 0 开始起算。</p>
<h4>说明</h4>
<p><strong>substring</strong> 方法将返回一个包含从 <em>start</em> 到最后（<font color=#ff0000>不包含 <em>end</em></font> ）的子字符串的字符串。</p>
<p><strong>substring</strong> 方法<font color=#ff0000>使用 <em>start</em> 和 <em>end</em> 两者中的较小值作为子字符串的起始点</font>。例如，<font color=#a52a2a><em>strvar</em>.<strong>substring(</strong>0, 3<strong>)</strong> 和 <em>strvar</em>.<strong>substring(</strong>3, 0<strong>)</strong> 将返回相同的子字符串。</font></p>
<p><font color=#ff0000>如果 <em>start</em> 或 <em>end</em> 为 <strong>NaN</strong> 或者负数，那么将其替换为0。</font></p>
<p><font color=#ff0000>子字符串的长度等于 <em>start</em> 和 <em>end</em> 之差的绝对值</font>。例如，在 <em>strvar</em>.<strong>substring(</strong>0, 3<strong>)</strong> 和 <em>strvar</em>.<strong>substring(</strong>3, 0<strong>)</strong> 返回的子字符串的的长度是 3。 </p>
<h4>示例</h4>
<p>下面的示例演示了 <strong>substring</strong> 方法的用法。</p>
<pre><code>function SubstringDemo(){
</code>&nbsp;&nbsp;&nbsp;<code>var ss;                         // </code>声明变量。
&nbsp;&nbsp;&nbsp;<code>var s = "The rain in Spain falls mainly in the plain..";</code><code>&nbsp;&nbsp;&nbsp;ss = <span class=cfe><strong>s.substring(</strong></span>12<span class=cfe><strong>,</strong></span> 17<span class=cfe><strong>)</strong></span>;   // </code>取子字符串。
&nbsp;&nbsp;&nbsp;<code>return(ss);                     // </code>返回子字符串。
}</pre>
</div>
<font color=#ff0000><strong>要与substr()方法相区别：</strong></font><br>1,substr返回从指定位置开始的指定<font color=#ff0000>长度</font>的子字符串<br>
<div style="BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 5px; BACKGROUND: #eee; PADDING-BOTTOM: 5px; MARGIN: 5px; BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid">
<h1><a name=jsmthsubstr></a>substr 方法</h1>
<p>返回一个从指定位置开始的指定长度的子字符串。</p>
<p><code><em>stringvar</em>.<strong>substr(</strong><em>start</em> [<strong>,</strong><em><font color=#ff0000>length</font></em> ]<strong>)</strong></code></p>
<h4>参数</h4>
<p class=dt>stringvar</p>
<p class=indent>必选项。要提取子字符串的字符串文字或 <strong>String</strong> 对象。</p>
<p class=dt>start</p>
<p class=indent>必选项。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。</p>
<p class=dt>length</p>
<p class=indent>可选项。在返回的子字符串中应包括的字符个数。</p>
<h4>说明</h4>
<p><font color=#ff0000>如果 <em>length</em> 为 0 或负数，将返回一个空字符串。如果没有指定该参数，则子字符串将延续到 <em>stringvar</em> 的最后。</font></p>
<h4>示例</h4>
<p>下面的示例演示了<strong>substr</strong> 方法的用法。</p>
<pre><code>function SubstrDemo(){
&nbsp;&nbsp;&nbsp;var s, ss;                // </code>声明变量。
&nbsp;&nbsp;&nbsp;<code>var s = "The rain in Spain falls mainly in the plain.";</code>
&nbsp;&nbsp;&nbsp;<code>ss = <span class=cfe><strong>s.substr(</strong></span>12<span class=cfe><strong>,</strong></span> 5<span class=cfe><strong>)</strong></span>;  // </code>获取子字符串。
&nbsp;&nbsp;&nbsp;<code>return(ss);               // </code>返回<code> "Spain"</code>。</pre>
</div>
<script type="text/javascript" src="http://www.cnitblog.com/Files/yemoo/gg2.js"></script><img src ="http://www.cnitblog.com/yemoo/aggbug/12421.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yemoo/" target="_blank">Yemoo'S JS Blog</a> 2006-06-17 15:25 <a href="http://www.cnitblog.com/yemoo/archive/2006/06/17/12421.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>