ブラウザへの情報表示

Microsoft® JScript® (以下 JScript) では、ブラウザにデータを直接表示する方法として 2 とおり用意されています。1 つは、document オブジェクトの write( ) メソッドおよび writeln( ) メソッドを使用する方法です。もう 1 つは、ブラウザ内のフォームや、警告、確認、および入力のメッセージ ボックスに情報を表示する方法です。

document.write( ) と document.writeln( ) を使用する

情報を表示する最も一般的な方法が、document オブジェクトの write(** **) メソッドを使用する方法です。このメソッドには、ブラウザに表示する文字列を受け取るための引数が 1 つあります。引数に指定する文字列は、単なるテキストでも HTML でもかまいません。

文字列を囲む引用符には、シングル クォーテーション (') もダブル クォーテーション (") も使用できます。この仕様により、文字列の中で引用符やアポストロフィを使うことができます。

document.write("π の値は、約 " + Math.PI + "です。");
document.write( );

**メモ   **次のコードの例は、ブラウザ ウィンドウに何かを表示しようとするたびに "document.write" と入力する手間を省くための簡単な関数です。この関数では、表示しようとした内容が未定義のものであってもエラーは発生せず、"w();" を実行した場合と同じ処理 (空白行の表示) が行われます。

function w(m) { // 関数を記述します。
m = "" + m + ""; // m を確実に文字列にします。
if ("undefined" != m) { // 空の文字列や未定義項目でないかどうかを調べます。
   document.write(m);
   }
document.write("<BR>");
}

w('<IMG SRC="horse.gif">');
w();
w("これは馬の彫刻です。");
w();

writeln( ) メソッドは、write( ) メソッドとほとんど同じですが、受け渡しした文字列の最後に必ず改行文字を追加するという点だけが異なります。HTML では、通常はこの改行は単なる空白文字に変換されますが、<PRE> タグや <XMP> タグを使っていれば、そのまま改行文字としてブラウザに表示されます。

write(** **) メソッドは、メソッドが呼び出されたとき、表示先となるドキュメントが開いて追跡しているプロセス内に存在していなければ、ドキュメントは開かれてクリアされます。これは、場合によっては危険です。次のコードの例は、1 分おきに時刻を表示するように記述したスクリプトですが、プロセス内で自分自身をクリアしてしまうため、2 回目以降の表示処理は失敗します。

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JScript">
function singOut()  {
var theMoment = new Date();
var theHour = theMoment.getHours();
var theMinute = theMoment.getMinutes();
var theDisplacement = (theMoment.getTimezoneOffset() / 60);
theHour -= theDisplacement;
if (theHour > 23)  {
theHour -= 24
}
document.write("現在、世界協定時刻で " + theHour + " 時 " + theMinute + " 分です。");
window.setTimeout("singOut();", 60000);
}
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT>
singOut();
</SCRIPT>
</BODY>
</HTML>

document.write() の代わりに window オブジェクトの alert() メソッドを次のように使えば、このスクリプトは正常に動作します。

window.alert("現在、世界協定時刻で " + theHour + " 時 " + theMinute + " 分です。");
window.setTimeout("singOut();", 60000);
}

現在のドキュメントをクリアする

document オブジェクトの clear() メソッドは、現在のドキュメントの内容をクリアします。このメソッドは、ドキュメントのほかの部分と一緒にスクリプトもクリアするため、使用には十分注意する必要があります。

document.clear();