html自身并没有太多智能:它不能做数学运算,不能判断某人是否正确填写了一个表单,而且不能根据web访问者的交互来做出判断。基本上,html让人们阅读文本、观看图片或视频,并且单击链接转向拥有更多文本、图片和视频的下一个web页面。若要给web页面添加智能,使其可以对站点的访问者做出响应,则需要使用javascript。
javascript允许web页面智能地反应。有了它,就可以创建智能的web表单,当访问者忘了包含必需的信息时,表单可以告知访问者。你可以让元素显示、消失,或者在页面上来回移动(如图1-1所示)。甚至可以用从web服务器获取的信息来更新web页面的内容(而不必载入一个新的web页面)。简而言之,javascript使得web站点更加动人、高效和有用。
注意 实际上,html5也为html添加了一些智能,包括基本的表单验证。但是,由于并非所有的浏览器都支持这些漂亮的功能(以及由于你可以使用表单和javascript实现更多的功能),你仍然需要用javascript来构建最好的、更为用户友好和交互性的表单。通过ben henick的《html5 forms》(o'reilly)和gaurav gupta的《mastering html5 forms》(packt publishing)可了解关于html5和web表单的更多内容。

对于很多人来说,“计算机编程”使他们脑海里浮现出这样的情景:拥有超常智慧的家伙在键盘前弯腰而坐,连续数小时飞快地敲击着几乎难以理解的、含混不清的语言。确实,某些编程工作就是那样的。编程可能像是非凡之人表演的复杂魔术。虽然很多编程概念很难掌握,但是在编程语言中,javascript对于非程序员来说算是相对友好的。
然而,javascript比html或css都要复杂,并且,对于web设计者来说,编程往往是一个陌生的世界。因此,本书的目标之一是帮助你像一个程序员一样思考。在本书中,你将学习基本的编程概念,不管你是编写javascript、actionscript,还是使用c++编写桌面程序,这些概念都适用。更重要的是,你将学习如何完成一个编程任务,从而在把javascript添加到web页面之前,就确切地知道自己想要做什么。
很多web设计师受到javascript中用到的奇怪符号和单词的影响而望而却步。常见的javascript程序中充满了符号({}[];,()!=)和不熟悉的单词(var、null、else if)。这看上去就像是一门外语,并且很多时候,学习编程语言和学习其他语言很相似。你需要学习新单词、新标点,并且理解如何把它们组合起来以便成功沟通。
实际上,每种编程语言都有它自己的一组关键字和字符,以及组合这些关键字和字符的一组规则,即语言的语法。我们需要记住javascript语言的单词和规则(或者至少有一本书在手边作为参考)。当学习一门新的语言的时候,我们会很快意识到,如果在错误的音节加了重音,可能使单词变得无法理解。同样,一个简单的输入错误甚至是遗漏了标点符号,都可能使得javascript程序无法运行,或者在web浏览器中产生一个错误。在开始学习编程的时候,我们会犯很多错误,这是编程的本质导致的。
首先,你可能会发现用javascript编程令人沮丧,你要花很多的时间去找出自己在录入脚本时所犯的错误。此外,你可能会发现刚开始的时候一些和编程相关的概念难以理解。但是不要担心,如果你过去尝试学习过javascript并且因为它太难而放弃,本书将帮助你越过那些经常绊倒编程新手的障碍。(并且,如果你已经有了编程经验,本书将教会你针对web浏览器编程时用到的javascript的特性以及独特概念。)
此外,本书不只是介绍javascript,还介绍了jquery——世界上最流行的javascript库。jquery使复杂的javascript编程变得更加容易,而且容易很多。因此,只需要有一些javascript的知识,再加上jquery的帮助,你将能够立刻创建高级的、可交互性的web站点。
javascript是一种脚本编程语言。这个术语也用来描述php和coldfusion这样的语言。那么,什么是脚本编程语言呢?
在计算机上运行的大多数程序都是使用编译型语言编写的。编译是指把程序员编写的代码转换为计算机能够理解的指令的过程。一旦编译了程序,就可以在计算机上运行它,既然编译后的程序已经直接转换为计算机能够理解的指令了,那么,它比脚本编程语言所编写的程序运行得更快。遗憾的是,编译一个程序是耗费时间的过程,你必须编写程序,编译它,然后测试。如果程序不工作,还必须重复整个过程。
另外,脚本编程语言只有在解释器(这是可以把脚本转换为计算机能够理解的内容的另外一个程序)读取它的时候才编译。以javascript为例,解释器内置到web浏览器中。因此,当web浏览器把带有javascript程序的一个web页面读入其中的时候,web浏览器就把javascript翻译成计算机能够理解的内容。因此,脚本编程语言运行起来比编译型语言要更慢,因为每次脚本程序运行的时候,都要为计算机进行翻译。脚本编程语言对于web开发者来说是很好的,脚本通常要比桌面程序规模小而且结构没有那么复杂,因此,速度上的缺失并不是那么重要。此外,既然它们不需要编译,那么创建和测试使用脚本编程语言的程序就是一个较快的过程。
当你为web页面添加javascript的时候,就是在编写一个计算机程序。当然,大多数javascript程序要比用来阅读e-mail、修复照片和构建web页面的程序简单得多。即便javascript程序(也叫做脚本)较简单并且较短,但它们还是具有很多和较复杂的程序相同的属性。
简而言之,任何计算机程序都是以指定的顺序完成的一系列步骤。假设你想要用web页浏览者的名字来显示一条欢迎消息,例如,“welcome, bob!”。要完成这个任务需要做几件事情:
询问访问者的名字。
获得访问者的响应。
在web页面上打印(即显示)消息。
虽然你可能不想在web页面上显示一条欢迎消息,但这个例子展示了编程的基本过程:确定想要做什么,然后把任务分解为完成它所必须经过的单独步骤。每次想要创建一个javascript程序,你必须经历这个过程来确定实现目标所需的步骤。一旦知道了这些步骤,你就准备好编写程序了。换句话说,把思路翻译成程序代码(单词和字符),这些代码让web浏览器去做我们想要的事情。