JavaScript
- 状态栏 (statusbar)显功能
- 日期物件
- 随数的产生
- 开启新窗囗
范 例 5:
在 这 一 部 分 首 先 要 为 你 展 示 的 JavaScript 特 性 是 将 你 的 滑 鼠 移 到 这 个 不 同 颜 色
的连 结上 面, 此 时 看 看 浏 览 器 下 的 状 态 列 有 何 结 果。 然 後 这 样 的 功 能 我 们 可 以
与 JavaScript 的 功 能 相 结 合。 好, 现 在 再 将 你 的 滑 鼠 移 到 本 处 不 同 颜 色 的连 结上
面, 你 应 该 会 发 现 有 一 个 视 窗 出 现, 是 吧?! 如 何! 怎 麽 做 到 的 呢? 以 下 就 是
这 一 个 连 结 的 作 法:
<a href="tpage.htm" onMouseOver="window.status='Just another stupid link...'; return true">
在 这 儿 你 只 要 在 传 统 <a> 的 标 签 中 加 入 onMouseOver 的 method, 就 可 达 成 你 要 的
效 果 了。 这 里 的 window.status 是 用 来 让 你 可 以 在 WWW 浏 览 器 的 状 态 列 上 显 示
一 些 讯 息 用 的。 在 语 法 中, 你 可 以 看 到 讯 息 部 分 是 用 ' 括 起 来 的 部 分, 而 非 以 " 括
起 来, 在 讯 息 部 分 结 束 之 後, 必 须 加 上 ; return true。
好 了, 利 用 以 上 的 特 性 可 以 很 简 单 的 完 成 第 二 个 连 结 的 例 子! 相 当 简 单, 以
onMouseOver 的 method 然 後 配 合 事 件 发 生 时 去 呼 叫 函 数 hello() 就 行 了, 不 再
多 加 解 释 了, 作 法 如 下:
<html>
<head>
<script language="LiveScript">
<!-- Hiding
function hello() {
alert("哈 罗!");
}
</script>
</head>
<body>
<a href="" onMouseOver="hello()">link</a>
</body>
</html>
范 例 6:
接 下 来 我 们 要 告 诉 你 一 个 使 用 日 期 和 时 间 的 例 子。 在 第 一 部 分 中, 你 已 看 过 了
lastModified 的 用 法 和 作 法。 现 在 要 告 诉 你 的 并 非 是 印 出 网 路 上 伺 服 器 或 文 件
修 改 日 期, 而 是 你 个 人 客 户 端 机 器 的 日 期 和 时 间。 以 下 就 是 执 行 结 果:
现 在 时 间 是: 14:4
今 天 日 期 为: 6/3/2008
做 法 如 下:
<script language="LiveScript">
<!-- Hiding
today = new Date()
document.write("现 在 时 间 是: ",today.getHours(),":",today.getMinutes())
document.write("<br>今 天 日 期 为: ", today.getMonth()+1,"/",today.getDate(),"/",today.getYear());
// end hiding contents -->
</script>
在 本 例 中, 我 们 必 需 首 先 建 立 一 个 日 期 变 数, 这 可 以 由 today= new Date()来 完 成。
如 果 没 有 特 别 指 定 时 间 与 日 期 的 话, 浏 览 器 将 会 采 用 本 地 客 户 端 机 器 的 时 间, 若 将
它 放 入 变 数 today 中。 这 儿 要 注 意 的 是: 我 们 并 没 有 宣 告 today 这 个 变 数 的 型 态,
这 和 Java 或 其 他 的 程 式 语 言 在 用 到 变 数 之 前 必 需 先 加 以 宣 告 的 方 式 有 相 当 大 的 不
同。 在 完 成 today 的 日 期 变 数 後, 我 们 等 於 建 立 了 一 个 具 有 本 地 时 间 与 日 期 的 物 件
(object)。 接 着 就 可 以 使 用 get... 的 method 以 取 得 today 这 个 物 件 的 时 间 和 日 期。
请 注 意 getMonth 这 个 method 所 取 得 的 月 份 范 围 是 由 0~11, 所 以 必 须 加 1 以 代
表 真 正 的 1 月 至 12 月。 看 完 以 上 的 例 子 後, 想 想 你 可 以 使 你 的 文 件 变 得 有 点
智 慧, 例 如: 某 个 文 件 有 时 效 限 制 的 话, 你 可 以 利 用 我 们 在 上 一 部 份 的范 例 4
中 所 提 到 的 功 能 和 这 一 个 范 例 中 所 学 习 到 的 功 能, 设 计 一 个 让 你 的 文 件 在 第10天
以 後 读 到 的 话 就 会 告 诉 读 者:"喂! 这 篇 已 过 时 了!"的 程 式, 试 试 看, 并 不 难!
除 以 上 功 能 外, 在 建 立 日 期 物 件 时 你 也 可 以 事 先 设 定 日 期 如 下:
首 先 是 年(西 元), 接 着 是 月(但 记 得 减 1), 再 接 着 是 日。 同 样 的 方 法 也 可 以
加 上 时 间 的 设 定, 如 下:
docStarted = new Date(96,0,13,10,50,0)前 三 个 是 日 期 的 年、 月、 日, 接 着 是 时、 分、 秒。 最 後, 我 们 必 须 提 醒 你,
JavaScript 并 没 有 实 际 的 日 期 型 态, 但 是 它 却 能 毫 不 费 力 地 显 示 出 日 期 和 时 间,
原 因 是 它 是 从 1 / 1 / 1970 0:0h 开 始 以 ms(milli seconds) 来 计 算 目 前 的 时 间 的,
这 听 起 来 似 有 些 复 杂, 但 你 倒 不 用 担 心, 它 有 标 准 的 共 用 函 数 可 以 计 算,
你 只 要 知 道 如 何 用 就 可 以 了!
范 例 7:
接 下 来 我 们 要 为 你 介 绍 一 个 可 以 产 生 乱 数 的 函 数, 也 是 以 JavaScript 所 写 的。
这 个 函 数 只 是 利 用 了 一 点 小 技 巧 而 已, 而 这 种 技 巧 在 大 部 分 的 编 译 器(compiler)中,
大 都 是 如 此(或 类 似) 计 算 出 乱 数 来 的。 我 相 信 JavaScript 最 後 应 也 会 以 相 似 的 方
法 来 产 生 这 样 的 method , 如 果 它 会 提 供 这 样 功 能 的 话。 以 下 是 此 函 数 的 结 果:
这 是 一 个 计 算 产 生 的 乱 数: 0.9836312285070992
以 下 是 这 个 作 法 的 写 法:
<html>
<head>
<script language="LiveScript">
function RandomNumber() {
today = new Date();
num = Math.abs(Math.sin(today.getTime()));
return num;
}
</script>
</head>
<body>
<script language="LiveScript">
<!--
document.write("This is a random number:", RandomNumber());
// -->
</script>
</body>
</html>
我 们 的 做 法 是 以 上 一 个 范 例 中 的 时 间 函 数; 它 会 出 现 一 个 很 大 的 数,
利 用 这 个 数 再 加 以 运 算 即 可! 例 如: 将 它 拿 来 做 正 弦 函 数(sin) 的 运
算, 得 到 的 数 再 做 绝 对 值 的 运 算, 结 果 可 以 得 到 一 个 介 於 0 与 1 间 的
实 数。 因 为 时 间 的 改 变 是 ms 为 单 位, 而 且 你 绝 不 会 获 得 相 同 的 数 字。
不 过 这 个 做 法 并 不 适 合 拿 来 快 速 的 连 续 产 生 一 系 列 的 乱 数, 但 如 果 你
是 不 定 时, 久 久 的 用 一 次, 那 效 果 就 不 错 了!
范 例 8:
JavaScript 的 一 个 重 要 特 点 是 它 可 以 制 作 视 窗。 你 可 以 产 生 一 个 的 视 窗, 并 且
在 此 视 窗 中 载 入 HTML 文 件, 完 全 以 JavaScript 来 航 游 网 际 网 路(Internet )。
接 下 来 的 范 例 就 是 告 诉 你 如 何 开 启 一 个 视 窗 并 且 写 点 东 西 进 去, 你 可 先 试 试
按 一 下 范 中 之 接 钮 看 看!
原 始 程 式 如 下:
<html>
<head>
<script language="LiveScript">
function WinOpen() {
msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no");
msg.document.write("<HEAD><TITLE>哈 罗!</TITLE></HEAD>");
msg.document.write("<CENTER><H1>酷 毙 了!</H1><h2>这 是<B>JavaScript</B>所 开 的 视 窗!</h2></CENTER>");
}
</script>
</head>
<body>
<form>
<input type="button" name="Button1" value="Push me" onclick="WinOpen()">
</form>
</body>
</html>
这 儿 你 又 看 到 用 按 钮 来 启 动 函 数。 这 次 的 函 数 WinOpen()是 藉 着 一 个 open
的 method 来 产 生 一 个 新 的 视 窗。 第 一 对 双 引 号("")是 用 来 描 述 欲 载 入 至 视 窗
中 的 文 件 URL 位 置。 如 果 留 者 空 白 的 话, 那 就 会 呈 现 一 个 空 白 视 窗, 并 可 以
透 过 JavaScript 写 入 东 西! 下 一 对 双 引 号 内 的 内 容 是 这 个 新 开 启 视 窗 的 名 字,
你 可 以 喜 欢 给 它 任 意 一 个 名 字, 但 不 可 加 入 空 白, 如 用 Display Window 的 话 便
会 出 现 错 误 讯 息, 请 注 意。 接 下 来 的 一 连 串 双 引 号 内 所 指 定 的 是 该 视 窗
的 相 关 性 质(properties), 这 些 蛮 有 趣 的, 你 可 以 指 定 要 不 要 有 工 具 棒(toolbar) 、
卷 轴(scrollbar), 等 等, 例 如: 如 果 你 写 toolbar = yes, 那 就 会 在 你 所 产 生 出
来 的 视 窗 中 出 现 一 排 工 具 列。 以 下 有 许 多 你 可 以 改 变 的 视 窗 特 性, 请 注 意 它 们
字 中 间 不 可 以 有 空 白:
toolbar
location
directories
status
menubar
scrollbars
resizable
copyhistory
width=pixels
height=pixels
以 上 的 pixels 部 分, 你 可 以 填 入 点 数 的 数 值, 这 数 值 是 告 诉 浏 览 器 这 个 视 窗 的
大 小。 在 开 启 视 窗, 并 且 将 它 称 为 msg 以 後, 就 可 以 开 始 写 些 东 西 到 视 窗 中 了。
你 可 以 写 入 一 般 正 规 的 HTML 语 法 文 字。 哇! 这 可 不 得 了 了, 也 就 是 说, 你 可 以
利 用 先 前 使 用 者 在 form 表 格 中 输 入 给 你 的 文 章 直 接 将 它 回 应 至 浏 览 器 上 来 了! 这 些
功 能 在 几 个 月 前 大 概 还 只 能 用 CGI 才 能 达 到 喔! 现 在 你 不 用 CGI 也 可 以 做 了!
- 什麽是JavaScript?
- 执行 JavaScript scripts
- 将scripts 语法嵌入HTML文件之中
- 第一个函数
- 输入型元件
- 日期功能 -- 最後修改期
JavaScript 是一种新的描述语言,此一语言可以被箝入 HTML 的文件之中。
透过 JavaScript 可以做到回应使用者的需求事件 (如: form 的输入) 而不用任何的网路
来回传输资料,所以当一位使用者输入一项资料时,它不用经过传给伺服端 (server)
处理,再传回来的过程,而直接可以被客户端 (client) 的应用程式所处理。你也可
以想像成有一个可执行程式在你的客端上执行一样!目前已有一些写好的程式在
Internet 上你可以连过去看看,以下有一些计算器的例子,在 Nescape 上。
JavaScript 和 Java 很类似,但到底并不一样! Java 是一种比 JavaScript 更复杂
许多的程式语言,而 JavaScript 则是相当容易了解的语言。JavaScript 创作者
可以不那麽注重程式技巧,所以许多 Java 的特性在 Java Script 中并不支援。
如需相关的更多资讯,可以去读读 Netscape 的有关 Netscape JavaScript 之介绍。
如何执行 JaveScript? 范例 1:
JavaScript 如何执行呢?
Netscape 2.0 beta 3 版以上,就可以执行 JavaScript 的功能了,我们测试过至少
beta 3 版以上可以,其他种类的 WWW 浏览器如:Internet Expore 3.0也有此一功能。
以下我们就以一些例子来告诉你如何将 JavaScript 写在 HTML 文件中,并且体会
一下新语言的特性,我们从第一个例子开始:如何用 JavaScript 印出一串文字至
HTML 文件中:
<html>
<head>
My first JavaScript!
</head>
<body>
<br>
This is a normal HTML document.
<br>
<script language="LiveScript">
document.write("这是以 JavaScript 印出的!")
</script>
<br>
Back in HTML again.
</body>
</html>
如果你使用的 WWW 浏览器是 Netscape 2.0 beta 3 以上版本的话,那你就可以
看到相关的结果,而如果你的浏览器并非是可以支援 JavaScript 的话,那看起
来就会有一些怪怪的了,以上范例的结果如下:
This is a normal HTML document.
这是以 JavaScript 印出的!
Back in HTML again. 此一范例并没有太大的用处,它只是要告诉你如何使用<script>的标签,并
如何将它置於 HTML 的文件之中而已,这个新的标签你可以特它放在文件
中的任何地方。
范例 2:
接下来下一个例子所要介绍的是有关函数 (function) 的使用。请放心,函数并
非很难懂的东西,但它却相当有用。函数通常是在 HTML 文件中 <body >的
部份被呼叫,而理所当然地,它最好事先被宣告并放在 HTML 文件中 <body>
的部份。好让在 <body> 部分中使用到函数时,它已确定被读取住来。另外,
<script> 标签的有关描述语法剖份,你可以用注解的符号将它括起来,以免旧
版或无法读取 JavaScript 的浏览器读到,而误会了意思!
<html> <head> <script language="LiveScript"> function pushbutton() { alert("嗨! 你好"); } </script> </head> <body> <form> <input type="button" name="Button1" value="Push me" onclick="pushbutton()"> </form> </body> </html>
如果你是使用 Netscape 2.0 beta 3 以上的浏览器,那以上 JavaScript 语法部份
的结果如下,你可以试着按按钮看看有何结果产生!
在范例 2 中,将会产生一个按钮,当你用滑鼠去按它的时候,应该会出现
一个视窗上面有“嗨! 你好”的字串,如何?不错吧!这个结果是如何产生
的呢?首先,在 <head>内的函数会被载入并存於内存中,接着一个新
的 <form>标签 <input type ="button".....>将产生一个接钮。然後,你可以
在後面看到 'onClick' 的指令,这就是告诉浏览器,当该按钮被按时,应会执行
onClick 後的函数 'pushbutton()',而这个函数在刚刚程式被载入时就已安放在
记忆体中了!请注意,在这个函数中我们用到了个新东西- alert 的 method,
是 JavaScript 事先定义好的,它会以对话视窗产生内涵的讯息,并有一"确定"
(OK)的按钮。 JavaScript 定义了许多的 method,你可以连至 Netscape 公司去
获取较完整的讯息。我想这些 method 在不久的将来会有长长的一串可以够你
学的,不过目前的 method 也已经可以做出相当多东西了!
接着下个例子将告诉你如何由一个输入型表格中读入使用者的输入资料,
事实上,这也是加入个函数就可以达成的。
范例 3:
<html> <head> <script language="LiveScript"> <!-- hide script from old browsers function getname(str) { alert("哈罗! "+ str+"!"); } // end hiding contents --> </script> </head> <body> Please enter your name: <form> <input type="text" name="name" onBlur="getname(this.value)" value=""> </form> </body> </html>
现在你可以试试结果如何:
请输入你的名字:
(<!- ... ->) 此部分即我们之前所提到的它可以避免旧版本或是不支援 JavaScript
的 WWW 浏览器因为不认识这些函数而产生错误。它的顺序应 该为 <script>
先,接着为注解的开头 <!-,然後是内容,注解尾 ->, 最後是 </script>。
另外要注意的一点是,语解尾那一行的开头双斜线 "//" ,不可以省略,它代表了
JavaScript 的注解,若省略了的话, ->之前的字会被误认为是 JavaScript 的指令。
这个例子可以让使用者输入一段文字,然後再输入完毕後经由 <input>标签中的
"onBlur" 事件函数侦知,於是呼叫 Getname(Str)这个函数来加以取得输入字串,
并将它显示在对话视窗上!函数 Getname(this.value) 中的 "this.value" 是你在文
字输入格式中所输入的值。
范例 4::
这个范例更是帅了!我们在 HTML 文件档完成了以後,常会加上一行文件
最後修改的日期,现在你可不用担心每次都要去改或是忘了改了。你可以
很简单的写一个如下的描述语法程式,就可以自动的为你每次产生最後修
改的日期了:
<html>
<body>
This is a simple HTML- page.
<br>
Last changes:
<script language="LiveScript">
<!-- hide script from old browsers
document.write(document.lastModified)
// end hiding contents -->
</script>
</body>
</html>
以上的 document.lastModified 叁数在 Netscape 2.0 beta 2 版时是被写成
documeut.lastmodified 的,然而,之後的版本就改为 document.lastModified,
所以注意一下 ;JavaScript 本身是会区分大小写的, lastmodified 与 lastModified
在它看来是不同的结果。
最後,在这一部分结束之前,要提醒你一点,像范例 4 ,的用法并非每一部
机器都是一样的,例如:PC 上跑得很正确的,在工作站上不一定会有相同的
结果,所以,或许你仍得测一测不同机器的结果才会有所定论。当然,这一切
是因为 JavaScript 还正在发展的原因,最新的讯息还是得去拜访一下Netscape
公司才知道。也许你也不用奇怪,当你隔周再来访时,JavaScript 可能又作了
相当大的改变了呢
在这个例子中又有新的东西了。首先,让我们注意一下,在语法中的注解部分