第 六 集




许 多 网 友 问 我 一 个 有 趣 的 问 题 : 如 何 用 mouse 按 一 下 便 可 同 时 载 入 两 页 文 件。 基 本 上 有 三 种 方 法 可 以 达 到 这 种 功 能。 第 一 种 方 法 是 制 作 一 个 按 钮, 让 使 用 者 按 下 後 去 启 动 一 个 能 同 时 将 两 份 文 件 载 入 不 同frames或 新 视 窗 的 函 式 (function)。 若 您 曾 经 看 过 此 份 简 介 文 件 的 其 它 章 节 的 话, 我 相 信 您 可 以 很 轻 易 写 出 这 种 语 法:

我 们 制 作 了 三 个 frame , 第 一 个 frame 中 包 含 了 一 个 按 钮。 请 注 意, 第 一 个 HTML 档 案 只 是 用 来 打 开 frame 和 给 予 每 个 frame 一 个 名 字。 若 您 还 不 清 楚 JavaScript 和 frame 的 关 系, 可 以 先 阅 读 第 三 章。 不 过 在 此 还 是 照 例 让 您 瞧 瞧 原 始 码 (不 知 您 是 否 在 很 多 电 脑 书 籍 中 遇 到 一 个 相 同 的 困 扰, 那 就 是 作 者 常 把 一 些 自 认 很 简 单 的 东 西 忽 略 不 提, 结 果 那 些 东 西 正 是 读 者 搞 不 懂 的 地 方 ! 所 以, 若 您 对 我 提 的 东 西 已 很 了 解, 请 发 挥 一 下 您 的 耐 性 :-)

frames2.html

<HTML>
<HEAD>
<title>Frames</title>
</HEAD>
    <FRAMESET COLS="295,*"> 
  <FRAMESET ROWS="100%,*"> 
    <FRAME SRC="loadtwo.html" NAME="fr1"> 
      </FRAMESET> 
  <FRAMESET ROWS="75%,25%"> 
    <FRAME SRC="cell.html" NAME="fr2"> 
    <FRAME SRC="cell.html" NAME="fr3"> 
      </FRAMESET> 
</FRAMESET> 
</HTML>
第 一 个 frame 会 载 入 loadtwo.html 并 产 生 一 个 按 钮 :

loadtwo.html

<HTML>
<HEAD>
<script language="JavaScript">
<!-- Hiding
  function loadtwo(page2, page3) {
     parent.fr2.location.href=page2;
     parent.fr3.location.href=page3;
}
// -->
</script>
</HEAD>
<BODY>
<FORM NAME="buttons">
     <INPUT TYPE="button" VALUE="同 时 载 入 两 份 文 件" onClick="loadtwo('frtest1.html',
     'frtest2.html')">
</FORM>
</BODY>
</HTML>

按 下 按 钮 後, 电 脑 会 传 递 两 个 字 串 给 loadtwo() 并 将 之 启 动。 由 loadtwo() 中 可 以 看 出, 第 一 个 字 串 是 用 来 定 义 第 二 个 frame fr2所 载 入 文 件 的 位 址 和 档 案 名。 若 您 想 定 义 另 外 的 按 钮 来 载 入 不 同 的 文 件, 您 可 以 重 复 使 用 此 函 式。 只 要 将 文 件 的 URLs (addresses) 传 给 loadtwo()即 可。


接 下 来 谈 谈 用 hyperlinks 同 时 载 入 两 页 文 件 的 第 二 种 方 法。 在 Internet 上 您 可 以 发 现 许 多 网 页 使 用 <a href="yourlink.html" onCLick="yourfunction()">来 达 到 上 述 提 及 的 功 能。 但 此 语 法 并 不 能 在 所 有 平 台 上 均 正 常 执 行, 因 此 最 好 不 要 用 此 语 法。 现 在 我 告 诉 您 另 一 种 写 法 : 我 们 可 改 用 下 述 JavaScript 语 法:

<a href="javascript:myfunction()">My Link</a>
此 种 方 式 非 常 简 单 而 且 在 所 有 浏 览 器 中 均 能 正 常 执 行。 您 只 要 写 上 javascript: 并 加 上 您 想 联 结 的 函 式 名 即 可。 若 此 函 式 名 称 设 为 'loadtwo()' , 那 您 就 可 藉 由 按 下 此 hyperlink 来 达 到 同 时 载 入 两 份 文 件 的 目 的 了。


再 接 着 谈 谈 用 mouse 按 一 下 便 可 同 时 载 入 两 页 文 件 的 第 三 种 方 法, 此 方 法 可 以 以 hyperlinks 或 按 钮 来 执 行。 您 可 先 在 第 二 个frame 中 载 入 一 个 HTML 文 件 :
<a href="getfr2.html" target="fr2">请 按 这 里 !</a>
然 後 在 此 文 件 中 (getfr2.html) 加 入 onLoad 这 项 指 令, 用 来 触 发 第 三 个 frame 载 入 另 一 份 文 件。 如 此 一 来 便 可 同 时 载 入 两 份 文 件。getfr2.html 档 的 原 始 码 如 下 :

<HTML>
<BODY onLoad="parent.fr3.location.href='getfr3.html'; return true;">
文 件 内 容.....。
</body>
</html>

当 然, 您 必 须 在 所 有 会 被 载 入 到 第 二 个 frame 的 文 件 中 加 入 onLoad 这 项 指 令。


另 一 个 常 遇 见 的 问 题 是 如 何 开 一 个 新 视 窗 并 载 入 文 件?我 们 想 达 到 的 效 果 是 当 使 用 者 按 一 下 mouse 便 会 '弹' 出 一 个 新 视 窗。 很 简 单, 只 要 在 <a href...> 中 利 用 target 这 项 特 性 就 可 达 到 此 效 果。 例 如 :
<a href="goanywhere.html" target="Resource Window">Go!</a>


现 在 我 将 谈 谈 在 JavaScript 中 几 种 常 用 的 运 算 子 (operator)。 运 算 子 可 以 使 您 的 JavaScript 语 法 更 精 简。 假 设 您 想 测 试 变 数 x 是 否 大 於 3 且 小 於 10, 您 可 写 成 :

if (x>3) 
  if (x<10)
    doanything();

当 满 足 x>3 x<10 时, 就 会 执 行 doanything()。 还 有 一 种 更 精 简 的 写 法 :

if (x>3 && x<10) doanything();
' &&' 称 为 AND- 运 算 子。 还 有 另 一 种 被 称 为 OR- 运 算 子 的 东 东 可 让 您 用 来 检 视 是 否 变 数 x 等 於 5 或 变 数 y 等 於 17 :

if (x==5 || y==17) doanything();
当 满 足 x==3 y==17 时, 就 会 执 行 doanything()。 当 然, 当 两 者 皆 成 立 时 也 会 执 行 doanything()。
在 JavaScript 中 是 利 用 == 来 做 比 较 的 工 作 (其 它 尚 有 <,>,<= 和 >=), 这 些 都 和 C/C++ 的 语 法 相 同。 另 外 单 一 '=' 是 用 来 将 数 值 存 入 变 数 用 的。 (在 Pascal 语 法 中 将 数 值 指 定 给 变 数 是 用 :=, 而 做 比 较 是 用 单 一 的 '=', 这 和 JavaScript 语 法 有 点 不 同)

若 您 想 利 用 '不 等 於' 这 项 特 性, 您 可 以 用 !=。 例 如 : x != 17.

尚 有 许 多 可 以 精 简 您 的 JavaScript 语 法 的 运 算 子, 去 翻 翻 Netscape 的 文 件 吧 !



回 主 目 录