1. 接触JavaScript
JavaScript 是 Netscape 公司与 sun 公司合作开发的。在 JavaScript 出现之前, Web 浏览器不过是一种能够显示超文本文档的软件的基本部分。而在 JavaScript 出现之后,网页的内容不再局限于枯燥的文本,它们的可交互性得到了显著的改善。 JavaScript 的第一个版本,即 JavaScript 1.0版本,出现在 1995 年推出的 Netscape Navigator 2 浏览器中。
JavaScript 是一种脚本语言, JavaScript 脚本通常只能通过 Web 浏览器去完成某种操作而不是像普通意义上的程序那样可以独立运行。因为需要由 Web 浏览器进行解释和执行,所以 JavaScript 脚本不像 Java 和 C++ 等编译型程序设计语言那样用途广泛。不过,这种相对的简单性也正是 JavaScript 的长处:因为比较容易学习和掌握,所以 JavaScript 很受那些本身不是程序员,但希望能够通过简单的剪贴操作把脚本嵌入他们的现有网页中的普通用户们的欢迎。
Netscape Navigator4 (NN4)浏览器发布于 1997 年 6 月, IE4 浏览器发布于同年的 10 月。这两种浏览器都对它们的早期版本进行了许多改进,使用得到极大扩展的 DOM ,可以通过 JavaScript 完成的功能大大增加,而网页设计人员也开始熟悉一个新的名词:DHTML。
* 利用 HTML 把网页标记为各种元素;
* 利用 CSS 设计各有关元素的排版样式并确定它们在窗口中的显示位置;
* 利用 JavaScript 实时地操控和改变各有关样式。
<div id="myelement">This is my element</div>
#myelement {
left: 50px;
top: 100px;
接下来,只需利用 JavaScript 改变 myelement 元素的 left 和 top 样式,就可以让它在页面上随意移动。不过,这种简单性只停留在理论上——因为 NN4 和 IE4 浏览器使用的是不同的且不兼容的 DOM ,所以要想实际获得这种效果还需要程序员做很多工作。换句话说,虽然浏览器制造商的目标是一样的,但他们在解决 DOM 问题时采用的办法却完全不同。
就在浏览器的制造商们为了压倒竞争对手而以 DOM 为武器展开一场营销大战的同时, W3C 不事声张地推出了一个标准化的 DOM 。令人欣慰的是, Netscape 、微软和其他一些浏览器制造商们还能抛开彼此的敌意而与 W3C 携手制定新的标准,并于 1998 年 10 月完成了“第 1 级 DOM " ( DOM Level l )。 回到刚才的例子,我们一起看看新的标准化 DOM 是如何解决同样的问题的。我们己经用 <div> 标签定义了一个 ID 为 myelement 的页面元素,现在需要找出它的 left 位置并把这个值保存到变量 xpos 中。下面是需要用到的语法:
var xpos = document.getElementByld ("myelement" ).style.left
乍看起来,这与刚才那两种非标准化的专有 DOM 相比并没有明显的改进。但事实上,标准化的 DOM 有着非常远大的抱负。浏览器制造商们感兴趣的只不过是一些通过 JavaScript 操控网页的具体办法,但 W3C 推出的标准化 DOM 却可以让任何一种程序设计语言对使用任何一种标记语言编写出来的任何一份文档进行操控。
* 摩尔斯码
* 国际时区
* 化学元素周期表
W3C 推出的标准化 DOM ,在独立性和适用范围等诸多方面,都远远超出了各自为战的浏览器制造商们推出的各种专有 DOM 。我们知道,浏览器市场份额大战的赢家是微软公司,但具有讽刺意味的是,专有的 DOM 和 HTML 标记对这个最终结果并无影响。 IE 浏览器之所以能击败其他对手,其主要原因不过是有运行着 Windows 操作系统的个人电脑都预装了它而己。受浏览器之争影响最重的人群是那些网站和网页设计人员。需要同时支持多种浏览器的软件开发工作,曾经是程序员们的噩梦。除了刚才提到的那些在 JavaScript 实现方面的差异之外 Netscape Navigator 和 IE 这两种浏览器在对 CSS 的支持方面也有许多非常不同的地方。有不少程序员都把编写那些可以同时工作在这两种浏览器环境下的样式表和脚本的工作视为一种黑色艺术。
为了打破浏览器制造商们筑起的专利壁垒,一群志同道合的程序员建立了名为 Web 标准计划(简称 WASP , http: //webstandards.org/ )的小组。 WaSP 小组采取的第一个行动就是,鼓励浏览器制造商们接受 W3C 制定和推荐的各项标准―也就是在浏览器制造商们的帮助下得以起草和完善的那些标准。或许是因为来自 WaSP 小组的压力,又或许是因为企业的内部决策,浏览器制造商后来推出的下一代浏览器产品对 Web 标准的支持得到了极大的改善。微软公司在正 IE 8 浏览器中内建了对 W3C 制定的标准化 DOM 的支持,但同时继续支持其专有的 Microsoft DOM。
目前使用的 95%以上的浏览器都具备对 DOM 的内建支持。发生在 20 世纪 90 年代后期的浏览器大战已经离我们越来越遥远。虽说还没有一种浏览器能够提供对 W3C DOM 的完美支持,但现代的浏览器都至少实现了 W3C 相关标准中 95%的规范,而这意味着在编写 JavaScript 代码时几乎不需要考虑它们将运行在何种浏览器环境下了。虽然 IE 浏览器的开发工作停顿了下来,但网页设计人员的日子已经不像过去那么困难了。过去,程序员在编写 JavaScript 脚本时往往不得不增加一些代码去探测在客户端运行的是哪种浏览器:现在,程序员只需编写一次代码就几乎可以把它们应用在所有的场合了。只要遵守 DOM 标准,程序员就可以相当有把握地确信,自己编写的脚本几乎在所有的环境下都可以正常工作。
3. JavaScript的语法
<script>
alert("Hello world!");
</script>
<script src="mycode.js"></script>
不管你是在 HTML 文件中直接插入代码还是通过外部的单独的文件来使用 JavaScript ,通常都是将 <SCRIPT> </SCRIPT> 标记对放在 <HEAD> 和 </HEAD> 标记对之间。这样能够保证在你的网页被下载到客户端后开始执行 JavaScript 的时候你的 JavaScript 代码也已经被下载到客户端了。这同时也是放置你的 JavaScript 函数的好地方,如果你想要某些代码在你的网页显示出来之后才执行的话,你最好将这些代码放在函数里,等网页显示以后再通过调用函数来执行它们。
在你开始编写代码之前,你必须知道一些基本的 JavaScript 语法和结构。 JavaScript 语法与 C/C++、Java 的语法很相似,如果你想要了解非常详尽的语法,可以参考 Microsoft's JScript Reference ,在那里你可以看到很多关于 JavaScript 语句、运算符、内建函数等等的内容列表,而我们这里只是讲一些在你开始学习 JavaScript 的时候需要掌握的一些基础语法知识!
// Note to self: comments are good.
// Note to self:
comments are good.
// Note to self:
// comments are good.
/* Note to self:
comments are good. */
<!- This is a comment in JavaScript.-->
<!- This is a comment in HTML ->
mood = "happy";
age = 33;
var mood;
var age;
var mood, age;
var mood = "happy";
var age = 33;
var mood = "happy", age = 33;
var mood, age;
mood = "happy";
age = 33;
var mood = "happy";
MOOD = "sad";
age = 33;
var my mood = "happy";
var my_mood = "happy";
var age = "thirty there";
age = 33;
var mood = 'happy';
var mood = "happy";
var mood = "dont't ask";
var mood = "dont"'t ask";
var height = "about 5'10"" tall;
var height = "about 5'10"" tall;
var age = 33.25;
var temperature = -20;
var temperature = -20.33333333;
var sleeping = true;
var married = true;
var married = "true";
var beatles = Array(4);
var beatles = Array();
array[index] = element;
beatles[0] = "John";
var beatles = Array(4);
beatles[0] = "John";
beatles[1] = "Paul";
beatles[2] = "George";
beatles[3] = "Ringo";
var beatles = Array("John","Paul","George","Ringo");
var beatles = Array["John","Paul","George","Ringo"];
var years = Array(1940,1941,1942,1943);
var lennon = Array("John",1840,false);
var name = "John";
beatles[0] = name;
var names = Array("John","Paul","George","Ringo");
beatles[1] = names[3];
var lennon = Array("John",1840,false);
var beatles = Array();
beatles[0] = lennon;
year = year +1;
var message = "I am feeling" + mood;
var mood = "happy";
var message = "I am feeling" + mood;
var year = 2005;
var message = "The year is" + year;
alert("10" + 20);
alert(10 + 20);
var year = 2005;
var message = "The year is";
message += year;
if (condition) {
if (1 > 2) {
if (1 > 2) alert("The word has gone mad!");
if (1 > 2)
else
var my_mood = "happy";
var your_mood= "sad";
if (my_mood = your_mood) {
var my_mood = "happy";
var your_mood= "sad";
if (my_mood == your_mood) {
if (my_mood != your_mood) {
if (mun >= 5 && mun <= 10) {
if (mun > 10 || mun < 5) {
if (!(1<2)) {
if (!(mun > 10 || mun < 5)) {
alert("The number is in the right range.");
while (condition) {
var count = 1;
while (cpunt < 11) {
我们来仔细分析一下上面这段代码。首先,创建数值变量count并赋值为1;然后,以count < 11——意思是“只要变量count的值小于11,就重复执行这个循环”,为条件创建一个while循环。在while循环的内部,用“++”操作符对变量count的值执行加1操作;而这一操作将重复执行10次。如果用Web浏览器来观察这段代码的执行情况,将会看到一个alert对话框闪现了10次。这条循环语句执行完毕后,变量count的值将是11。
} while (condition);
var count = 1;
} while (count < 11);
var count = 1;
} while (count < 1);
while (condition) {
for (initial condition; test condition; alert condition) {
for (var count = 1; count < 11; count ++) {
var beatles = Array("John","Paul","George","Ringo");
for (var count = 0; count < beatles.length; count++) {
function name(arg1, arg2, ...) {
JavaScript statements...
}
