本实例使用JavaScript制作一个一个下雨的网页,其效果可以与任何相同效果的Flash比拟,本实例中用到函数、条件语句和循环语句等。本节主要涉及的JavaScript语法如下。

1.cocument.all

document.all是一个表示当前文档的所有对象的数组,不仅包括页面上可见的实体对象,还包括一些不可见的对象,如HTML注释等。在document.all数组里,元素不分层次,是按照其在文档中出现的先后顺序,平行罗列的,所以可能用数字萦引来引用的任何一个元素。但比较常用的是用对象id来引用一个特定的对象,如document.all["element"]。

2.document.layers

document.layers是一个代表所有由诸如<div><layer>等定位了的元素数组。通常也是用<div>或<layer>对象的id属性来引用的,但是这里不包含除此以外的其他元素。

3.document.layers

document.body.clientWidth是网页可见区域宽度值。

4.document.body.clientHeight

cocument.body.clientHeight是网页可见区域高度值。

5.cocument.write()方法

documnet.write()方法可以用在两个方面,即页面载入过程中用实时脚本创建页面内容,以及用延时脚本创建本窗口或新窗口的内容。该方法需要一个字符串参数,它是写窗口或框架中的HTML内容。这些字符串参数可以是变量或值为字符串的表达式,写入的内容常常包括HTML标记语言。

切记在载入页面后,浏览器输出流自动关闭。在此之后,任何一个对当前页面进行操作的document.write()方法将打开一个新的输出流,它将清除当前页面内容(包括源文档的任何变量或值)。因此,假如希望用脚本生成的HTML替换当前页面,就必须把HTML内容连接起来赋给一个变量,使用一个document.write()方法完成写操作。不必清除文档并打开一个新数据流,一个document.write()方法调用就可完成所有的操作。

关于document.write()方法还有一点要说明的是它的相关方法document.close()。脚本向窗口(不管是本窗口或其他窗口)写完内容后,必须关闭输出流。在延时脚本的最后一个document.write()方法后面,必须确保含有document.close()方法,不这样做就不能显示图像和表单。并且,任何后面调用的document.write()方法只会把内容追加到页面后,而不会清除现有内容来写入新值。

6.Math对象

Math对象提供数学计算的函数与常量。Math对象没有构造函数,是一个固有的对象,这是它与Date和String对象的区别。Math对象的函数很多,可以没有参数,也可以有多个参数,具体请查阅附录。

本实例主要代码如下:

<script language="JavaScript">

var no = 50;

var speed = 1;

/*定义元素数组*/

var ns4up = (document.layers) ? 1 : 0;

var ie4up = (document.all) ? 1 : 0;

...

if (ie4up)

{

/*定义网页可见区域的大小*/

doc_width = document.body.clientWidth;

doc_height = document.body.clientHeight;

}

...

if ( i == 0 )

{

/*网页加载时创建页面内容*/

document.write("<layer name=\"dot"+ i + "\" left=\"1\" ");

document.write("top=\"1\" visibility=\"show\"><font color=\"#999999\">");

}

...

function initRain(){

a = 6;

r[i] = 1;

/*Math对象提供数学计算的函数与常量*/

sn = Math.sin(a);

cs = Math.cos(a);

...

</script>