首页>参考读物>计算机科学与技术>软件与程序设计

JavaScript和jQuery实战手册(原书第2版)
作者 : (美)David Sawyer McFarland 著
译者 : 孙向阳 李军 等译
出版日期 : 2013-03-27
ISBN : 978-7-111-39903-2
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 516
开本 : 16
原书名 : JavaScript and jQuery: The Missing Manual,Second Edition
原出版社: OReilly Media, Inc.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

第一部分:JavaScript入门,从基础的内容开始,介绍了JavaScript的基本构建块,包括如何为Web页面添加脚本、存储和操作信息,如何与浏览器窗口通信等。第二部分:jQuery入门,介绍了Web最流行的JavaScript库:jQuery,该工具将使你成为一个更有生产力和能力的JavaScript程序员。第三部分:构建页面功能,提供了关于JavaScript实际应用的很多真实示例。首先介绍了如何创建弹出式导航栏,以及构建一个可交互的照片集;其次介绍了如何添加表单验证,添加日历挂件来更容易地选择日期,以及根据Web访问者做出的选择来改变表单选项等方法。第四部分:Ajax与Web服务器通信,介绍了使得JavaScript成为最耀眼的Web语言的一种技术:Ajax。第五部分:提示、技巧和除错,该部分介绍了程序员新手经常犯的一些错误,以及学习发现程序中的错误并进行修正的技术。

图书特色

经典畅销书全新升级,系统且深入地讲解了JavaScript和jQuery编程的各项知识,被誉为JavaScript和jQuery编程图书领域的旗帜,被公认为从零开始学习JavaScript和jQuery编程的首选!

  本书第1版不仅在市场上取得了良好的销售成绩,而且获得了读者极佳的口碑,在JavaScript编程领域独树一帜!第2版结合JavaScript和jQuery最新技术,对全书内容进行了更新和优化,使之在技术上更先进,也更易于学习。本书的最大特色就是内容系统且全面:从JavaScript的基本概念,到Web最流行的JavaScript库——jQuery,再到构建Web功能;从JavaScript各组件和服务的使用,到jQuery和Ajax等开发工具的应用,再到Web应用程序的发布;从基本的Web搭建等基础知识,到jQuery、CSS、Ajax等高级知识??几乎面面俱到,广度与深度兼备。
  全书通过大量代码示例说明图的方式说明代码的工作机制,以及各个部分的作用和功能,引导读者在实践中学习和领悟JavaScript的基本思想。通过学习本书,读者不仅能够掌握JavaScript编程的各项技术细节,还能体会到不断剖析、层层递进解决问题的思路。让读者在实践中学,轻松地掌握使用JavaScript和jQuery开发Web应用的有用技能。

David Sawyer McFarland
  Sawyer McFarland Media公司总裁,资深Web应用开发工程师、培训讲师和技术作家。在Web开发方面拥有将近20年的工作经验,具有非常高的知名度和非常大的影响力。曾担任加州大学伯克利分校的网络负责人并负责针对Macworld.com进行了一次完全由CSS驱动的重新设计。曾在《PracticalWebDesign》《MXDeveloper’sJournal》《Macworld》杂志和CreativePro.com发表了大量关于Web设计的文章,广受读者好评。

图书前言

不久以前,Web实在是一个令人讨厌的地方。用陈旧的HTML构建的Web页面只是显示信息,而没有其他更多的东西。人们单击一个链接,然后等待载入一个新Web页面,这就是他所能获得的交互。
  现如今,大多数Web站点几乎具有和台式机程序一样的响应性,对于每次鼠标单击都迅速响应。这都得益于我们将要在本书中学习的内容,即JavaScript及其亲密战友jQuery。
JavaScript
  JavaScript是一种程序设计语言,它允许用动画、交互性和动态的视觉效果来增强HTML的功能。
  JavaScript可以通过提供即时反馈而使得Web页面更为有用。例如,一个具备JavaScript功能的购物车页面,当访问者选择要购买的一件商品的时候,可以即时显示总金额,以及税费和运费。当某人试图提交一个遗漏了必需信息的Web表单的时候,JavaScript可以产生一条错误消息。
  JavaScript还允许创建有趣的、动态的和交互性的界面。例如,使用JavaScript,可以将由缩略图组成的一个静态页面转换为一场包含动画的幻灯片放映(我们将在10.2.2节学习如何做到这点)。或者,可以做一些更加微妙的事情,例如,通过将内容组织到很小的面板,访问者只要简单地单击一下鼠标就可以访问它们,从而可以在页面上放置更多的信息,而不必使得页面显得拥挤(参见10.1.1节)。或者,添加一些有用的和吸引人的内容,例如,弹出的工具提示为Web页面上的项目提供补充信息(参见10.4.1节)。
  JavaScript的主要优点之一是其即时性。它使得页面可以立即对于某人和页面的交互操作做出响应,例如单击一个链接、填充一个表单,或者只是在屏幕上移动鼠标等操作。JavaScript不会遭遇到和PHP这样的服务器端编程相关的令人沮丧的延迟,而后者则依赖于Web浏览器和Web服务器之间的通信。因为JavaScript不会依赖于频繁加载和重新载入Web页面,使用它创建的Web页面给人们的感觉及其操作都更像是桌面程序,而不像是一般的Web页面。
  如果你访问Google Maps(http://maps.google.com/),将会看到JavaScript的实际应用。Google Maps允许我们查看所在城市的地图(或者很多其他地方的地图),放大以获取街道和公交车站的详细视图,或者缩小以得到如何穿越城镇、州或全国的鸟瞰图。尽管在Google之前有很多的地图站点,但它们总是要求重新载入多个Web页面(这通常是一个很慢的过程)来获得想要的信息。相反,Google Maps不需要刷新页面,它对我们的选择做出快速响应。
  使用JavaScript创建的程序,既有真正简单的程序(例如,弹出一个新的浏览器窗口,其中有一个Web页面),也有像Google Docs(http://docs.google.com/)这样功能完备的Web应用程序,而后者允许我们使用Web浏览器来创建幻灯片、  编辑文档和创建电子表格,其感觉就像是在计算机上直接运行的程序一样。
JavaScript简史
  JavaScript由Netscape于1995年后期发明,它几乎和Web本身一样老。尽管JavaScript在如今广受重视,但是它却有着颇为跌宕起伏的历史。一度认为它是狂热爱好者的编程语言,用来添加不太有用的效果,如像证券报价器一样在Web浏览器状态栏滚动的消息,或者是跟随鼠标光标在页面上移动的、动画的蝴蝶效果。在JavaScript的早期,很容易在网上找到数以千计的JavaScript程序(也叫做脚本),但是,很多这样的脚本通常不会在所有的Web浏览器上工作,并且有时候甚至导致浏览器崩溃。
  注意: JavaScript和Java编程语言毫无关系。JavaScript最初名为LiveScript,但是,Netscape的市场营销人员确信,如果试图和当时热门的Java语言联系起来,JavaScript应该会得到更多的关注。但是,不要把两者混为一谈,尤其是在求职面试的时候。
  在早期,JavaScript也遭遇到两个主流浏览器Netscape Navigator和Internet Explorer不兼容的问题。由于Netscape和Microsoft都试图通过添加新的和(表面上)更好的功能来超越对方,这两个浏览器常常以不同的方式工作,这使得人们很难创建在两种浏览器中都能很好工作的JavaScript程序。
  注意: 在Netscape引入了JavaScript之后,Microsoft引入了jScript,这是它们自己的JavaScript版本,包含在 Internet Explorer之中。
  黎明前的曙光就要来临了,并且当前的浏览器(如Firefox、Safari、Chrome、Opera和Internet Explorer 9)都将它们操作JavaScript的很多方式标准化了,这使得编写在大多数浏览器下工作的JavaScript程序容易一些了(在当前的Web浏览器中仍然有一些不兼容,因此,你需要学习一些处理跨浏览器问题的技巧。我们将在本书中学习如何克服浏览器不兼容性的问题)。
  在过去的几年里,通过在Google、Yahoo和Flickr等特色鲜明的网站上的应用,JavaScript已经获得了重生。这些站点广泛地使用JavaScript来创建交互式的Web应用程序。现在来学习JavaScript是再好不过的时机了。有了已知的充足的知识和已经编写的高质量的脚本,即便你是初学者,也可以为Web站点添加高级的交互,你完全不必要成为一名计算机科学家。
  注意: JavaScript也称为ECMAScript。ECMAScript是JavaScript规范的“正式”名称,它由名为Ecma国际(http://www.ecmascript.org/)的国际标准化组织负责开发和维护。
JavaScript随处可见
  JavaScript并不是仅用于Web页面。它已经被证明是如此有用的一种编程语言,如果学习了JavaScript,你可以创建Yahoo Widget和Apple的Dashboard Widget,为iPhone开发程序,并且在像Acrobat、Photoshop、Illustrator和Dreamweaver这些众多的Adobe程序中加入脚本编程功能。实际上,Dreamweaver已经为聪明的JavaScript程序员提供了一种方式来向程序中添加他们自己的命令。
  此外,Flash的编程语言ActionScript也是基于JavaScript的,因此,如果学习了JavaScript的基础知识,你将能够为承担Flash编程项目做好充分准备。
jQuery
  JavaScript有一个令人尴尬的小秘密:编写起来比较难。尽管JavaScript比很多其他编程语言要简单一些,但它仍然是一门编程语言。并且,很多人(包括Web设计师)发现编程很难。更为复杂的是,不同的Web设计师对JavaScript的理解不同,因此,在Chrome中工作的程序,可能在Internet Explorer 9中完全没有反应。这种常见的情况可能导致在不同的机器和不同浏览器上要花很多时间进行测试,才能确保程序对站点的所有访问者都能很好地工作。
  这也是jQuery诞生的原因。jQuery是一个JavaScript库,其目的是使得JavaScript编程更容易、更有趣。JavaScript库是一个复杂的JavaScript程序,它简化了有难度的编程任务,并且解决了跨浏览器的问题。换句话说,jQuery解决了JavaScript最头疼的两个问题,即不同Web浏览器复杂和繁琐的特性。
  在JavaScript编程中,jQuery是Web设计师的秘密武器。有了jQuery,只用单独一行代码就能完成任务,而要编写自己的JavaScript代码来完成这些任务,要写上百行程序并且花很多时间进行浏览器测试。实际上,一本深入介绍JavaScript的图书,至少是本书厚度的两倍,并且,当你读完它(如果你能设法读完的话),你所能做到的事情,只需一点jQuery知识就能够完成一半。
  这就是为什么本书的主要内容是介绍jQuery,它使你可以如此容易地做到很多事情。jQuery的另一个美妙之处在于,你可以使用上千个易于使用的jQuery插件,向Web站点添加高级功能。例如,FancyBox插件(将在7.4节介绍)允许我们将一个简单的缩略图页面转变成为一个交互性的幻灯片播放,只需要一行程序就能做到!
  jQuery已经用于数百万个站点(http://trends.builtwith.com/javascript/JQuery),这一点也不令人惊奇。甚至像Drupal和WordPress这样流行的内容管理系统,也内置了支持jQuery的模块。你甚至可以找到一种叫做“jQuery程序员”的招聘职位,而根本不提JavaScript。当你学习jQuery的时候,你就加入了Web设计师和程序员的一个大社群,这些人使用一种简单和更为强大的方法来创建交互的、功能强大的Web页面。
HTML:主题结构
  如果没有Web设计的两大支柱HTML和CSS,JavaScript一筹莫展。很多程序员提到,3种语言构成了一个Web页面的三个“层”:HTML提供了结构层,以一种更有意义的方式来组织图片和文字等内容;CSS(Cascading Style Sheet,层叠样式表)提供表现层,使得HTML中的内容很好地显示;JavaScript添加行为层,给Web页面带来生气,使它能够和Web访问者交互。
  换句话说,要掌握JavaScript,我们还需要很好地理解HTML和CSS。
  提示: 要了解HTML和CSS的完备介绍,请参阅Elisabeth Freeman和Eric Freeman编写的《Head First HTML with CSS and XHTML》。如果需要CSS的技巧性主题的深入介绍,请参阅David Sawyer McFarland所著的《CSS: The Missing Manual》(这两本书都由O扲eilly出版)。
  HTML(HyperText Markup Language,超文本标记语言)使用叫做标签的简单命令来定义Web页面的各个部分。例如,下面的HTML代码创建了一个简单的Web页面:




Hey, I am the title of this web page.


Hey, I am some body text on this web page.


  这个示例可能不是很令人兴奋,但是它具备了一个Web页面所需的所有基本元素。这个页面开始的第一行是文档类型声明,或者简称为doctype,它说明了页面的文档类型以及它符合哪个标准。HTML实际上有几种不同的版本,并且对于每个版本使用不同的doctype。在这个例子中,该页面的doctype是HTML 5;一个HTML 4.01或XHTML文档doctype更长一些,并且还包含了一个URL,它指向互联网行的一个文件,其中包含了该类型文件的定义。
  实际上,doctype告诉Web浏览器如何显示该页面。在Internet Explorer中,doctype甚至可以影响到CSS和JavaScript如何工作。如果doctype不正确或者缺少doctype,我们可能会发现脚本有很多跨浏览器的差别而最终四处碰壁。换句话说,总是要在HTML中包含一个doctype。
  当今有5种常用的HTML类型:HTML 4.01 Transitional、HTML 4.01 Strict、XHTML 1.0 Transitional、XHTML 1.0 Strict和HTML5(在发展中的新类型)。这5种类型都很相似,只是在如何书写标签以及允许哪些标签和属性方面有些细微区别。大多数Web页面编辑程序都在创建新的Web页面的时候加入了相应的doctype,但是,如果你需要了解每种doctype如何编写的示例,可以在www.webstandards.org/learn/reference/templates看到不同类型的页面的模板。
  使用哪种类型的HTML并不重要。所有当前的Web浏览器都理解每种doctype,并且可以使用5种文档类型中的任何一种来显示Web页面而不会有任何问题。使用哪种doctype,不会像确保页面验证(参见后面的“快速熟悉:验证Web页面”部分)正确那么重要。
  注意: XHTML曾经作为Web设计师的下一件大事宣布。尽管我们仍然发现有人认为只应该使用XHTML,但是,风向已经开始转换了。W3C已经停止了XHTML的开发以支持HTML 5。你可以通过阅读《HTML 5: The Missing Manual》(Matthew MacDonald著)或《HTML 5: Up and Running》(Mark Pilgrim著)(都由O扲eilly出版)来了解HTML 5。
HTML标签如何工作
  在前面的示例中,和我们所能看到的任何Web页面的HTML代码一样,可以看到大多数的命令都成对地出现,并且包含一段文本或其他命令。尖括号之间的内容,也就是那些标签,都是用于告诉Web浏览器如何显示页面的指令。标签就是超文本标记语言的“标记”部分。
  开始标签告诉浏览器指令从哪里开始,而结束的标签告诉指令从哪里结束。结束标签总是在第一个尖括号符号(<)之后包含一个斜杠(/)。例如,标签

表示一段文本的开始,而

表示其结束。
  对于功能正常的Web页面,至少必须包含如下3个标签:
  标签出现在Web页面刚开始的地方(在doctype之后),并且在Web页面末尾再次出现(带有一个斜杠)。这个标签告诉Web浏览器,这个文档中包含的信息是使用HTML编写的,而不是用其他某种语言编写的。页面的所有内容,包括其他的标签,都出现在开始和结束标签中。
  如果把Web页面看做一棵树,标签就是它的树干。从树干伸展出来的是两个分支,分别代表任何Web页面的两个主要部分,即标题和正文。
  Web页面的标题包围在标签中,它包含了页面的标题。它还提供了可供浏览器和Web搜索引擎使用的其他不可见的信息(例如,搜索关键字)。
  此外,标题还可以包含Web浏览器用来显示Web页面和增加交互性的信息。例如,把CSS放入到文档的标题部分。文档的标题也经常包含到JavaScript程序的链接和到其他JavaScript文件的链接。
  Web页面的正文包含在一对标签中,其中包括了出现在浏览器窗口中的所有信息,包括标题、文本、图片等。
  在标签内,我们通常可以看到如下的标签:
  用

标签告诉Web浏览器一段文本开始,而用

表示一段文本结束。
  标签突出显示文本。如果把某段文本包含在其相对的标签中,将会得到粗体字体。HTML代码段  Warning!告诉Web浏览器以粗体显示单词 “Warning!”。
  标签或者叫做锚点标签,在Web页面中创建了一个超链接。当单击的时候,超链接可以导向Web上的任何地方。通过在标签中放置一个Web地址,告诉浏览器该链接指向何处。例如,可以输入Click here!
  浏览器知道,当访问者单击了“Click here!”的时候,它应该跳转到Missing Manual Web站点。这个标签的href部分叫做属性,而这个URL(Uniform Resource Locator,统一资源定位符或Web地址)是值。在这个例子中,  http://www.missingmanuals.com是href属性的值。
快速熟悉
验证Web页面
  正如前面所介绍的,Web页面的doctype表示用来创建Web页面的HTML或XHTML的类型。规则根据类型而略有不同,例如,和HTML 4.01不同,XHTML不允许拥有一个未结束的

标签,并且要求所有的标签名和属性都是小写的(例如,而不是)。HTML 5包含了新的标签,并且允许你使用HTML或XHTML语法。由于每个HTML版本使用不同的规则,因此总是需要验证Web页面。
  HTML验证器是确保Web页面编写正确的一个程序。它检查页面的doctype,然后分析页面中的代码看它是否符合doctype定义的规则。例如,验证器会标记出错误拼写的标签名或未结束的标签等错误。万维网联盟(World Wide Web Consortium,W3C)是负责Web上使用的众多技术的组织,它有一个免费的在线验证器,位于http://validator.w3.org。我们可以把自己的HTML代码复制并粘贴到一个Web表单,上传到一个Web页面,或者把验证器指向Web上已经存在的一个页面,验证器会分析HTML并报告该页面是否有效。如果有任何错误,验证器告诉你错误是什么以及错误发生在HTML文件的哪一行。
  如果使用Firefox,可以从http://users.skynet.be/mgueury/mozilla下载HTML Validator插件。这个插件允许我们直接在Web浏览器中验证一个页面,只要打开这个页面(甚至直接位于计算机上的一个页面),验证器就会指出HTML中的错误。在Safari中也有一个类似的插件,叫做Safari Tidy,可以在http://zappatic.net/projects/safarivalidator.找到。
  验证HTML不只是为了保证良好的形式,它也是确保JavaScript程序正确工作所必需的。很多JavaScript涉及操作一个Web页面的HTML:例如,标识一个特定的表单字段,或者在特定位置放置新的HTML(例如一条错误消息)。为了让JavaScript能够访问和操作Web页面,HTML必须保持正确的工作顺序。忘了结束一个标签,多次使用同样的ID名,或者不正确地嵌套HTML标签,都可能使得JavaScript代码不能正确工作或者根本不工作。
CSS:为页面添加样式
  HTML曾经一度是需要掌握的唯一语言。我们可以构建带有彩色文本和图形的页面,并且使得单词以不同的大小、字体和颜色显示。但如今,访问者期待从Web站点得到更多,因此,我们需要使用一种新的、更为灵活的技术,即CSS,从而给页面更高级的视觉效果。CSS是一种格式化语言,可用于美化文本、构建复杂的页面布局以及为站点广泛添加样式。
  把HTML仅仅看做构建一个Web页面的语言。它帮助我们标识出想要让世界知道的内容。像

这样的标签表示标题,并且赋予了相关的重要性:1级标题比2级标题更为重要。

标签表示一段基本的信息。其他的标签也提供了进一步的结构化线索,例如,

    标签表示一个符号列表(例如,生成一个更为智能的配方成分列表)。
      另一方面,CSS为组织良好的HTML内容添加了设计才能,使得它更美丽并且更容易阅读。基本上,CSS样式只是告诉Web浏览器如何在页面上显示特定元素的一条规则。例如,可以创建一条CSS规则来使得所有的

    标签以36像素的高度显示,字体为Verdana,颜色为橙色。CSS可以做很多功能强大的事情,例如,添加边框、改变页内边距,甚至控制一个页面元素的确切位置。
      说到JavaScript,对页面做出的一些最有价值的改变涉及了CSS。我们可以使用JavaScript来给一个HTML标签添加CSS样式,或者从该标签删除一个CSS样式,或者根据访问者的输入或鼠标单击来动态地改变CSS属性。我们甚至可以从一种样式的一个属性动画地变换为另一个样式的该属性(例如,将背景颜色动态地从黄色修改为红色)。例如,可以通过直接修改CSS的display属性来让一个页面元素显示或隐藏。要实现一个项目在屏幕上的动画,可以使用JavaScript来动态地修改CSS position属性。
    样式剖析
      单个样式定义的一个元素的外观是很基础的常见用法。它实际上是一条规则,告诉Web浏览器如何格式化某内容,把标题变蓝色、围绕照片绘制一个红色边框,或者创建一个150像素宽的边栏来容纳链接的列表。如果样式可以说话,它会说:“嗨,浏览器,让这个看起来像这样。”样式实际上由两个元素组成:浏览器要格式化的Web页面元素(选择器),以及实际的格式化指令(声明块)。例如,选择器可以是一个标题、一段文本、一张照片等。声明块可以把文本变为蓝色、围绕段落添加一个红色边框,或者把照片放置到页面的中央,其可能性是无限的。
      注意: 技术类型通常遵从W3C的领导,并且叫做CSS样式规则。本书交叉地使用术语“样式”和“规则”。
      当然,CSS样式不会用漂亮的英语来交流。它们有自己的语言。例如,要设置Web页面上所有段落的字体颜色和字体大小,应该这样编写:
    p { color: red; font-size: 1.5em; }
      这个样式只是说:“让所有段落的文本(以

    标签标记的内容)显示为红色和1.5em高”(em是基于浏览器的常规文本大小的一个单位或度量)。如图I-1所示,即便像这样的一个简单样式也包含几个元素:
      选择器。选择器告诉浏览器要样式化页面上的哪一个或哪几个元素,例如标题、段落、图像或链接。在图I-1中,选择器(p)引用所有的

    标签,这让Web浏览器使用这个样式的格式化指令来格式化所有的

    标签。使用CSS所提供的范围广泛的选择器,加上一点儿创新性,我们就可以实现对页面格式化的很好控制(选择器是使用jQuery的一个重要的部分,将从4.6节开始详细介绍它)。
      声明块。跟在选择器后面的代码包含了我们想要对选择器应用的所有格式化选项。这个块以一个左花括号({)开头,以一个右花括号(})结束。
      声明。在声明的左花括号和右花括号之间,添加一个或多个声明,或者格式化指令。每个声明有两个部分,一个属性和一个值,然后以一个分号结束。
      属性。CSS提供了范围广泛的格式化选项,叫做属性。属性是一个单词,或者连字符连接的几个单词,表示某种样式效果。大多数属性拥有一个直白的名字,例如,font-size、margin-top和background-color。例如,background-color属性设置背景颜色(可以猜想得到)。
      注意: 如果需要复习有关CSS的知识,请阅读《CSS: The Missing Manual》。
      值。最后,将通过给一个CSS属性赋值来表现自己的创新能力,例如,使得背景为蓝色、红色、紫色或黄绿色。不同的CSS属性需要特定类型的值,包括颜色(例如,红色或#FF0000)、长度(例如,18px、2in或5em)、URL(例如,images/background.gif)或者一个特定关键字(例如,top、center或bottom)等。

      我们不需要像图I-1那样把样式写成单独一行。很多样式有多个格式化属性,因此,将它们划分为多行可以使其更容易阅读。例如,我们可能想要把选择器和开始花括号放在第一行,每个声明独占一行,结束花括号独自在最后一行,如下所示:
    p {
    color: red;
    font-size: 1.5em;
    }
      缩进格式也有帮助,可以缩进一个制表符或者两个空格,从而在视觉上把选择器和声明区分开来,使得很容易搞清楚哪个是哪个。最后,在冒号和属性值之间添加一个空格是可选的,但是添加空格的话,可以增加样式的可读性。实际上,可以在二者之间添加任意多个空格。例如,color:red、color: red和color: red都有效。
    用于JavaScript编程的软件
      要创建HTML、CSS和JavaScript组成的Web页面,只需要像Notepad(Windows)或TextEdit(Mac)这样的一个基本的文本编辑器就可以了。但是,在输入了数百行JavaScript代码之后,你可能想要尝试一个更适合于编写Web页面的程序。这里列出一些常用的程序,既包括免费的也包括需要付费购买的。
      注意: 有数百种工具可以帮助我们开发Web页面和编写JavaScript程序,因此,下面并不是一个完整的列表。可以把它们看做当前JavaScript爱好者最棒的选择。
    免费程序
      除了这里列出的外,还有很多免费的程序可以用来编辑Web页面和样式表。如果你仍然使用Notepad和TextEdit,不妨试试这里列出的工具。下面是你可以选择开始尝试的工具列表:
      Notepad++(Windows,http://notepad-plus.sourceforge.net)是程序员的朋友。它可以突出显示JavaScript和HTML代码的语法,并且允许我们保存宏并为其指定快捷键,以便可以自动地插入最经常使用的代码段。
      HTML-Kit(Windows,www.chami.com/html-kit)是一款功能强大的HTML/XHTML 编辑器,包含了很多有用的功能,例如,直接在程序中预览一个Web页面(从而不必在浏览器和编辑器之间来回切换),添加HTML标签的快捷键等。
      CoffeeCup Free HTML Editor(Windows,www.coffeecup.com/free-editor)是商业软件CoffeeCup HTML编辑器(售价49美元)的免费版本。
      TextWrangler(Mac,www.barebones.com/products/textwrangler)是一款免费软件,实际上是BBEdit的配套下沿版本。BBEdit是一款用于Mac的高级的、知名的文本编辑器。TextWrangler不具备BBEdit的所有内置的HTML工具,但它确实包括语法着色(用不同的颜色突出显示标签和属性,以便很容易扫描页面并区分开各个部分),支持FTP(因此,可以把文件上传到Web服务器)等。
      Eclipse(适用于Windows、Linux、Mac,网站是www.eclipse.org)是针对Java开发者的一款免费的、流行的软件,它包含了使用HTML、CSS和JavaScript的工具。还有专门针对JavaScript的一个版本(www.eclipse.org/downloads/packages/eclipse-ide-javascript-web-developers/indigor),以及为jQuery添加自动填充功能的Eclipse插件(http:// marketplace.eclipse.org/category/free-tagging/jquery)。
      Aptana Studio(适用于Windows、Linux、Mac,网站是www.aptana.org)是一款强大的、免费的编程环境,带有使用HTML、CSS、JavaScript、PHP和Ruby on Rails的工具。
    商业软件
      商业Web站点开发程序有很多,从便宜的文本编辑器到具备所有配件的、完整的Web站点构建工具,以下是其中一部分:
      EditPlus(Windows,www.editplus.com)是一款便宜的文本编辑器(售价35美元),包括语法着色、FTP、自动完成和其他节省录入的功能。
      CoffeCup(Windows,www.coffeecup.com)是文本编辑器和可视化编辑器的组合(售价49美元)。我们可以直接编写HTML代码或者使用一个可视化界面来构建页面。
      textMate(Mac,http://macromates.com)是Mac程序员的一款热门软件。这个文本编辑器(售价63美元)包括很多节省JavaScript程序员时间的功能,包括“自动匹配字符”,它会自动插入一对标点标签的第二个字符(例如,在输入了一个开始圆括号后,该程序自动插入一个结束圆括号)。
      BBEdit(Mac,www.barebones.com/products/bbedit)。这是很多人喜欢的Mac文本编辑器(售价99.99美元),具有很多操作HTML、XHTML、CSS、JavaScript的工具。包括很多有用的Web构建工具和快捷方式。
      Dreamweaver(Mac和Windows,www.macromedia.com/software/dreamweaver)是可视化的Web页面编辑器(售价399美元)。它允许我们看到页面在Web浏览器中的外观。该程序还包括一款强大的文本编辑器,可用于编写JavaScript程序;还包括优秀的CSS创建和管理工具。要全面学习如何使用这一功能强大的软件,请阅读《Dreamweaver: The Missing Manual》一书。
      Expression Web Designer(Windows,www.microsoft.com)是Microsoft的最新的Web设计工具(售价149美元)。它替代了FrontPage并且包含了很多专业化的Web设计工具,包括优秀的CSS功能。
    关于本书
      和Microsoft Word或Dreamweaver这样的软件不同,JavaScript不是单独一家公司所开发的单独产品。JavaScript没有开发支持人员来为普通Web开发者编写一本易于阅读的手册。尽管你可以在Mozilla.org(例如,https://developer.mozilla.org/en/JavaScript/Reference)或Ecmascript.org(www.ecmascript.org/docs.php)这样的站点上找到很多的信息,但没有关于JavaScript编程语言的权威资源。
      由于没有关于JavaScript的手册,人们常常不知道从何处开始着手学习JavaScript。并且JavaScript的出色之处甚至常常难倒有经验的Web专业人员。本书可以作为JavaScript的配套手册。在本书中,读者可以看到关于使用JavaScript来创建高度交互的Web页面的按部就班的说明。
      同样,可以在http://docs.jquery.com/Main_Page找到关于jQuery的详细文档。但是,这是程序员写给程序员的,因此,说明比较简短而且偏技术化。尽管jQuery比常规的JavaScript编程要更加容易,本书将教你一些基本的jQuery原理和技术,以便当你使用jQuery扩展自己的Web站点的时候可以从正确的路径出发。
      本书专为那些拥有一些Web页面构建经验的读者而编写。你需要熟悉HTML和CSS,才能更好地阅读和利用本书,因为JavaScript通常和HTML和CSS紧密协作来实现其魔力。本书主要的内容是为高级初学者或中级计算机用户编写的。但是,如果你是构建网页的新手,本书中名为“快速熟悉”的部分将提供你需要理解的话题的介绍性信息。相反,如果你是一名高级Web页面设计者,那么,请注意那些名为“高级用户提示”的部分。它们提供了对于有经验的计算机爱好者的更多技术提示、技巧和快捷方式。
      注意: 本书还适时地推荐其他的图书,这些图书介绍了超出了JavaScript的使用手册之外的更为专门的主题。有时候推荐的图书来自于O扲eilly Media的“The Missing Manual”系列,但并不总是如此。如果有些O扲eilly图书之外的好书,我们也会告诉你。
    本书介绍JavaScript的方法
      JavaScript是一种真正的编程语言:它不像HTML或CSS那样工作,但是,它有自己的一套(常常是复杂的)规则。对于Web设计师来说,调整思维并开始像计算机程序员那样思考问题,这并不总是很容易的事情,并且也没有一本图书可以教给你关于JavaScript的所有知识。
      本书旨在将你变成下一位伟大的程序员。本书要帮助Web设计师熟悉JavaScript的点点滴滴,进而开始学习jQuery,以便用它来尽可能快速而容易地为Web站点添加真正有用的交互。
      在本书中,我们学习了JavaScript和编程的基础知识,但是只是基础知识还不够创建令人激动的Web页面。要介绍构建高级的、可交互Web页面所需的所有JavaScript知识,本书的篇幅都是不够的。相反,本书介绍了如何使用专业的(并且免费的)JavaScript代码,从而将你从细小的、耗费时间的细节中解放出来,并能够创建出在不同浏览器中运行良好的JavaScript程序。
      我们学习了JavaScript的基础知识,然后直接学习如何在一些非常高级但易于使用的JavaScript辅助程序的一点儿帮助(是很多帮助)下,开发具有交互性的高级页面。考虑一下这种方式:我们自己砍伐树木和量制木材,自己建造窗户、门和门框,自己贴瓷砖等来盖一座房子。这种DIY的方法是很多JavaScript图书中常见的方法。但是,谁有那么多的时间呢?本书的方法更像是利用一些已有的构件并且使用基本的技能将它们组合起来,从而盖一座房子。最终的结果是,用零散的时间盖起了一栋漂亮而功能齐全的房屋,并且我们不必花时间来学习这个过程的每一个步骤。
    内容梗概
      本书划分为5个部分,每个部分各包含几章。
      第一部分,JavaScript入门,从非常基础的内容开始。我们将学习JavaScript的基本构建块,并且得到一些关于计算机编程的有用的通用提示。这一部分教你如何为Web页面添加脚本、存储和操作信息,并且给程序添加智能以使它能够对不同的条件做出响应。我们还学习了如何和浏览器窗口通信,存储和读取cookie,对鼠标单击和表单提交等各种事件做出响应,以及修改Web页面的HTML。
      第二部分, jQuery入门,介绍了Web最流行的JavaScript库:jQuery。这里,我们将学习这一惊人的编程工具的基础知识,该工具将使你成为一个更有生产力和能力的JavaScript程序员。我们将学习如何选择和操作页面元素,通过让页面元素响应访问者,从而增加交互性;并且添加漂亮的视觉效果和动画。
      第三部分,构建页面功能,提供了关于JavaScript实际应用的很多真实的示例。我们学习了如何创建弹出式导航栏,以及构建一个可交互的照片集。我们通过使用添加表单验证(以使访问者不会提交遗漏信息的表单),添加一个日历挂件来更容易地选择日期,以及根据Web访问者做出的选择来改变表单选项等方法,使得表单更为有用。最后,我们还使用标签页面板、折叠面板和弹出式对话框来创建有趣的用户界面,这些界面外观很好看而且功能完备。
      第四部分,Ajax与Web服务器通信,介绍了凭借一己之力就使得JavaScript成为最耀眼的Web语言的一种技术。在该部分中,我们学习了如何使用JavaScript与Web服务器通信,以便页面能够接收信息并根据Web服务器提供的信息来更新自己,而不必载入一个新的Web页面。
      注意: 你将会看到按部就班的说明,介绍如何在你的计算机上安装一个Web服务器,以便可以利用本书配套Web页面上的(第三部分介绍的)漂亮的技术(参见后面的 “生动示例”了解更多细节)。
      第五部分,提示、技巧和除错,在似乎什么也无效的时候给你提供帮助:可能完美地编写了JavaScript程序却没有看到它达到我们所预期的效果(或者情况更糟,它根本不工作)。你将了解程序员新手最常犯的一些错误,并学习发现程序中的错误并进行修正的技术。
      在本书的最后有一个附录,给出了帮助你进一步学习JavaScript编程语言的参考书目列表。
    基础知识
      要使用本书,并且真正地使用计算机,需要知道一些基础知识。本书假设你已经熟悉了一些术语和概念:
      单击。本书使用3种指示来要求你使用计算机鼠标或者触摸板。单击意味着把鼠标光标移动到屏幕上的某处,然后(不要再移动鼠标)按下并释放鼠标上的单击按钮(或者笔记本的触摸板)。右键单击意味着用鼠标右键做同样的事情。双击当然意味着快速连续单击两次,而根本不移动鼠标光标。拖动意味着在按下鼠标按钮的同时移动鼠标。
      提示: 如果使用Mac,并且没有鼠标按钮右键,可以通过按下Control键同时单击一个鼠标按钮来做到同样的事情。
      当告诉你在Mac上-click某内容,或者在PC上Ctrl-click某内容,你可以在按下或Ctrl按键的同时单击(这两个按钮都在空格键附近)。
      菜单。菜单是屏幕或窗口顶部的单词:File、Edit等。单击一个按钮就会出现一个命令列表,就好像这个命令列表已经在窗口的隐藏处写好了,我们只是将其拉下来。
      键盘快捷方式。如果试图以一种创新的方式来录入,那么,必须手离开键盘,抓起鼠标然后使用一个菜单(例如,使用Bold命令),这对你来说太具有干扰性了。这就是为什么很多有经验的计算机行家宁愿通过某种组合键来触发菜单命令。例如,在Firefox Web浏览器中,可以按下Ctrl-+(Windows)或-+(Mac)来使得Web页面上的文本变大(并且更易阅读)。当我们读到“按下-B”这样的一条指令的时候,首先按下键,然后在按下的时候,输入B,然后释放着两个键。
      操作系统基础知识。本书假设你知道如何打开一个程序,在Web上冲浪和下载文件。你应该知道如何使用开始菜单(Windows)和Dock或Apple菜单(Macintosh),以及控制面板(Windows)或系统偏好设置(Mac OS X)。
      如果你已经掌握了这些信息,就具备了阅读本书所需的所有技术背景。
    关于这些箭头
      在整本书中,如果你看到这样的一个句子“打开System→Library→Fonts文件夹”。这只是一条较长的指令的简写方式,这条指令告诉你依次打开3个嵌套的文件夹,例如,“在你的硬盘上,找到一个名为System的文件夹,打开它。在System目录窗口中有一个名为 Library的目录,双击它打开。在这个目录下还有一个叫做Fonts的目录,双击它打开”。
      同样,这种箭头帮助我们简化了在菜单中选择命令的表达过程,如图I-2所示。

    在线资源
      本书设计用来让你能够在Web上更快、更专业地工作,那么,自然,本书的价值的很大一部分也依赖于网络。在网上,你可以找到示例文件,方便动手实验。你还可以与“The Missing Manual”团队交流并告诉我们你喜欢(或不喜欢)本书的哪些内容。请访问www.missingmanuals.com,或者直接进入后续的某一节。
    生动示例
      在你阅读本书的过程中,会遇到很多生动的示例——你可以直接照着做,用到的原始素材(例如,图像和完成一半的Web页面)可以从www.sawmac.com/js2e或www.missingmanuals.com/cds的本书Missing CD页面下载。在吊床上休息的时候,直接阅读这些示例你将获益匪浅;但是如果能够花时间在计算机上亲自尝试,你会发现专业设计师构建Web页面的方式,并产生异常深刻的认识。
      你还会发现,在本书的教程中,有完成的页面的URL,你可以将自己的工作和最终的结果进行比较。换句话说,你不会只看到本书的页面中的JavaScript代码的图片,而且还会看到Internet上实际的、可以使用的Web页面。
    注册
      如果你在oreilly.com注册了本书,将得到相应的优惠,例如,购买本书的未来新版本的折扣。注册只需要几次鼠标单击。要开始注册,在浏览器中输入www.oreilly.com/register进入注册页面。
    反馈
      有问题?需要更多的信息?想要做一个图书评论者?在我们的反馈页面上,你可以得到专家对你在阅读本书时遇到的问题的解答,分享你对于“The Missing Manual”系列图书的看法,并找到和你一样对JavaScript和jQuery感兴趣的社群。访问www.missingmanuals.com/feedback就可以了。
    勘误
      为了努力让本书内容尽可能地保持及时和准确,每次印刷的时候,我们都对读者提出的勘误进行确认。我们还会注意在本书Web站点上进行修改,以便你可以将重要的更正在你的图书中进行标注(如果你愿意的话)。访问http://tinyurl.com/jsjqtmm以报告勘误,并且查看已有的勘误。

上架指导

计算机\程序设计

封底文字

“David的这本书是JavaScript编程图书领域的旗帜——措辞优雅、精雕细琢,是开发Web应用的优秀图书。”
——Kevin Kelly,《Wired》联合创始人

经典畅销书全新升级,系统且深入地讲解了JavaScript和jQuery编程的各项知识,被誉为JavaScript和jQuery编程图书领域的旗帜,被公认为从零开始学习JavaScript和jQuery编程的首选!

本书前一个版本不仅在市场上取得了良好的销售成绩,而且获得了读者极佳的口碑,在JavaScript编程领域独树一帜!第2版结合JavaScript和jQuery的最新技术,对全书内容进行了更新和优化,使之在技术上更先进,也更易于学习。本书的最大特色就是内容系统且全面:从JavaScript的基本概念,到Web最流行的JavaScript库:jQuery,再到构建Web功能;从JavaScript各组件和服务的使用,到jQuery和Ajax等开发工具的应用,再到Web应用程序的发布;从基本的Web的搭建等基础知识,到jQuery、CSS、Ajax等高级知识……几乎面面俱到,广度与深度兼备。
全书用大量代码示例说明图的方法来说明代码的工作机制,以及各个部分的作用和功能,引导读者在实践中学习和领悟JavaScript的基本思想。在本书中,读者不仅能够掌握JavaScript编程的各项技术细节,更能体会到不断剖析、层层递进的解决问题的思路。让读者在实践中学,轻松地掌握使用JavaScript和jQuery开发Web应用的有用技能。

作者简介

(美)David Sawyer McFarland 著:David Sawyer McFarland Sawyer McFarland Media公司总裁,资深Web应用开发工程师、培训讲师和技术作家。在Web开发方面拥有接近20年的工作经验,具有非常高的知名度和非常大的影响力。曾担任加利福尼亚大学伯克利分校的网络负责人并负责针对Macworld.com进行了一次完全由CSS驱动的重新设计。曾在加利福尼亚大学伯克利分校新闻研究所、电子艺术中心、艺术大学研究院、新媒体Ex’Pressions中心,以及波特兰州立大学教授Web设计。曾在《Practical Web Design》《MX Developer’s Journal》《Macworld》杂志和CreativePro.com发表关于Web设计的文章,广受读者好评。

译者简介

孙向阳 李军 等译:暂无简介

译者序

JavaScript是Web应用程序开发的必备语言。无论是为Web页面添加交互性还是创建整个应用程序,如果没有JavaScript,今天的Web不会是现在这个样子。另外,正是Ajax技术使得JavaScript从一种脚本语言真正成长为有用且强大的程序设计语言。
  jQuery是一个快速而且简洁的JavaScript库,它使得以下Web开发工作更加简单:遍历操作HTML文档、事件处理、动画以及快速Web开发中的Ajax互操作等。jQuery完全改变了开发者编写JavaScript的方式和效率。
  本书是O'Reilly的“The Missing Manual”系列丛书中的一本。“The Missing Manual”系列丛书的目标是为那些没有学习手册的软件和技术填补空白,给读者提供一本权威、易学的参考手册。因此,本书可以作为JavaScript和jQuery的配套手册,帮助读者掌握JavaScript语言基础知识以及基本的jQuery原理和技术,并进一步学习如何使用jQuery来扩展Web站点的功能和交互性。
  在翻译本书的过程中,我们感觉到本书有如下一些鲜明的特色,值得读者在阅读的过程中关注和利用:
  清楚而精炼,针对读者不同需求贴切地安排内容。本书介绍基础知识的内容简洁而精炼,往往通过一些短小的代码例子来清楚地说明知识点的用法,非常易于初学者学习。针对不同读者安排的“快速熟悉”、“常见问题”、“高级用户提示”等特色板块遍布全书。同时,书中有很多“注意”和“提示”,帮助读者更高效地利用本书。附录部分还给出了深入学习JavaScript和jQuery相关知识的参考资料和图书介绍。
  手把手地讲解。每一章不仅介绍知识内容,而且配备了配套的动手实践教程,让读者在实践中学习知识,轻松地掌握使用JavaScript及其库开发Web应用的有用技能。
  图示丰富而实用。本书中的图示非常丰富,大致上分为两种。一种是体现Web应用程序效果或软件操作的界面图。我们知道,大多数Web动态效果很难通过黑白印刷的图来展现,而本书则通过一种特殊的方式来尽可能清晰地呈现并很好地实现了这一点。通过图示突出显示局部变化,或者用多图来体现变化。另一种则是代码示例说明图,用图示的方法来说明代码的工作机制,以及各个部分的作用和功能。图示的用法是本书乃至整个“The Missing Manual”系列的一个突破。为什么这些技术图书得到众多读者尤其是初学者的青睐,我们想,这是其中一个重要的原因。
  交叉参考方便查阅。作为手册,方便速查是必需的条件之一。而本书也通过丰富的交叉参考做到了这一点。正文中用到JavaScript的其他相关知识的时候,都给出了它们在本书中的位置的参考指示,可以帮助读者快速地找到图书中的相关部分,方便知识回顾或复习。
  对JavaScript库尤其是jQuery的深入介绍和实际应用。jQuery等库的引入和应用,使得JavaScript的编程方式发生了很大的变化。jQuery日渐大行其道,为越来越多的公司和网络开发者所采用,甚至有专门针对jQuery程序员的招聘。因此,真正的Web开发者很有必要学习和掌握jQuery。而且,你可以花一本书的价格,买两本书。因为本书不仅介绍了JavaScript编程知识,而且以一种实践的方式讲解如何使用jQuery构建高级、炫目的Web应用。完全不必再花钱去购买一本jQuery图书,因为本书介绍的用法已经足够你玩转jQuery。
  非常高兴能够有机会把这样一本好书介绍给广大读者。参加翻译本书工作的有孙向阳、李军、罗娜、关志兴、王建勇、毛立涛、闫柳青、姜巧生、沈海峰、谢扣林、乔义峰、刘查强、王义强。读者朋友在阅读本书的过程中,如果觉得有疑问或不妥之处,可通过lijun961@sina.com联系译者。

图书目录

前言 5
第一部分:JavaScript入门
第1章 编写第一个JavaScript程序 23
1.1 编程简介 24
1.2 如何把JavaScript添加到页面 27
1.3 第一个JavaScript程序 31
1.4 把文本写到Web页面上 34
1.5 附加外部JavaScript文件 35
1.6 追踪错误 37
第2章 JavaScript的语法 42
2.1 语句 42
2.2 内置函数 43
2.3 数据类型 43
2.4 变量 46
2.5 操作数据类型和变量 51
2.6 教程:使用变量创建消息 56
2.7 教程:请求信息 58
2.8 数组 60
2.9 教程:编写使用数组的页面 68
2.10 对象的简单介绍 71
2.11 注释 73
第3章 为程序添加逻辑和控制 77
3.1 使程序智能地响应 77
3.2 教程:使用条件语句 89
3.3 使用循环处理重复性任务 93
3.4 函数:把有用的代码转换为可复用的命令 100
3.5 教程:一个简单测验 109
第二部分:jQuery入门
第4章 jQuery简介 117
4.1 JavaScript库简介 117
4.2 获取jQuery 119
4.3 把jQuery添加到页面 121
4.4 修改Web页面:概览 124
4.5 理解文档对象模型 127
4.6 再谈选择页面元素 128
4.7 向页面添加内容 138
4.8 设置和读取标签属性 141
4.9 读取、设置和删除HTML属性 147
4.10 操作选择中的每个元素 148
4.11 自动提取引用 151
第5章 动作/响应:让页面通过事件动起来 157
5.1 事件 157
5.2 以jQuery的方式使用事件 162
5.3 教程:事件简介 164
5.4 更多的jQuery事件概念 169
5.5 高级事件管理 176
5.6 教程:一页的FAQ 179
第6章 动画和效果 184
6.1 jQuery效果 184
6.2 教程:登录滑块 189
6.3 动画 191
6.4 在效果完成后执行一个操作 195
6.5 教程:动画的仪表盘 198
第三部分:构建网页功能
第7章 改进图像 207
7.1 交换图像 207
7.2 教程:添加翻滚图像 212
7.3 教程:带有效果的照片集 216
7.4 使用jQuery lightBox的高级照片集 222
7.5 教程:FancyBox照片集 231
第8章 改进导航 235
8.1 一些链接基础知识 235
8.2 在新窗口中打开外部链接 238
8.3 创建新窗口 241
8.4 在页面上的一个窗口中打开页面 245
8.5 基本的动画的导航栏 249
第9章 扩展Web表单 257
9.1 理解表单 257
9.2 为表单添加智能 268
9.3 教程:基本表单扩展 272
9.4 表单验证 278
9.5 验证教程 291
第10章 扩展界面 302
10.1 把信息组织到标签页面板 302
10.2 为站点添加一个内容幻灯片 313
10.3 确定页面元素的大小和位置 320
10.4 添加工具提示 327
第四部分:Ajax与Web服务器通信
第11章 初识Ajax 343
11.1 Ajax 344
11.2 Ajax基础知识 345
11.3 Ajax的jQuery方式 351
11.4 JSON 373
第12章 Flickr和Google Maps 380
12.1 JSONP简介 380
12.2 给站点添加一个Flickr Feed 381
12.3 教程:给站点添加Flickr图像 386
12.4 向站点添加Google地图 390
第五部分:提示、技巧和除错
第13章 让jQuery发挥最大的作用 407
13.1 有用的jQuery提示和信息 407
13.2 使用jQuery文档 411
13.3 遍历DOM 417
13.4 用于操作HTML的更多函数 421
13.5 高级事件处理 425
第14章 深入JavaScript 428
14.1 操作字符串 428
14.2 在字符串中查找模式 433
14.3 操作数字 447
14.4 日期和时间 453
14.5 综合应用 459
14.6 编写更高效的JavaScript 462
14.7 创建快速载入的JavaScript 468
第15章 除错和调试 470
15.1 常见JavaScript编程错误 470
15.2 使用Firebug调试 481
15.3 调试教程 492
附录 JavaScript资源 499

教学资源推荐
作者: 丁山 朱留存 编著
作者: [美]艾伦 A. A. 多诺万(Alan A. A. Donovan)布莱恩 W. 柯尼汉(Brian W. Kernighan)著
作者: 汪同庆 张华 杨先娣
参考读物推荐
作者: 葛红儒 著
作者: Adam Myatt