JavaScript講座
(メールマガジン編)

10/16日発行 ヨッシーの”ホームページを作ろう!(JavaScript編)”★Vol.16★

document.writeについて

今までにも何度か出てきた、文字を書く命令document.writeについて、
もう少し詳しくやってみよう。

 

★ document.writeについて ★

いままでに何度か出てきたdocument.witeという命令。
これは、文字をブラウザに表示するための命令だったね。
そこで、JavaScriptで利用されるビルトインオブジェクトというものについてやってみよう。
(※名前は特に覚えなくてもよい。以下の内容を理解しよう)
document.writeという命令は、正式に書くと実はwindows.document.writeなんだ。
このwindowという文字の、ある場合と無い場合の違いはなんだろう。
実は、このwindowdocumentとうのはプログラムを実行する場所をあらわしているんだ。
windowというのはブラウザ全体を指していて、documentというのは実際に文字や画像を表示する部分を指しているんだよ。
※厳密には表示部の元の場所、つまりHTML文に文字を書く
つまり、window(ブラウザ)にあるdocument(表示部)に文字を書く(write)という形になっているんだね。
JavaScriptは通常ブラウザ上で実行されるので、普通なら全ての命令にwindowがついてしまうよね。
でも、毎回命令にwindouwをつけていると効率が悪いので、つけるのは当然のものとして、windowという文字は省略することができるんだ。
このビルトインブジェクトは、後で出てくるフォームなどの扱いでも出てくるからね。

もう一つ、document.writeについて知っておいてほしいのは。
実際には画面に表示する文字を指定するんじゃなくて、HTML文書そのものに書き込む文字を指定しているんだ。
ここで1つ考えてみよう。
ブラウザに2行にわたって文字を表示したいときはどうすればいいだろう。
下の例文を見てみよう。

例1)
document.write("こんにちわ、");
document.write("ヨッシーです。");

これをブラウザで表示したらどうなると思う?
これを表示すると、

こんにちわ、ヨッシーです。

となってしまうんだ。
2行で表示したいわけだから、これじゃだめだよね。
JavaScriptのソース文では2行に別れている気がするけど、実際にブラウザで表示してみると1行になってしまうんだ。
この命令は実際はHTML文自体に書き込んでいるので、何も指定しなかったら改行されることはないんだ。
このHTML文に書き込んでいるというところでピンと来た人はいるかな。
そう、HTMLで改行をあらわす<BR>というタグもいっしょにHTML文に書き込んでやればいいね。
つまり、

例2)
document.write("こんにちわ、<BR>");
docement.write("ヨッシーです。");

これはHTML文書に書くための命令なので、この命令によってHTML文は

≪HTML内≫
こんにちわ、<BR>ヨッシーです。

となるね。
なので、このように書けば、<BR>のところで改行されることになるよね。

≪表示≫
こんにちわ、
ヨッシーです。

このように表示されるね。
つまり、表示する文字を太くしたかったり文字の大きさを大きくしたいときでも、

document.write("<B>こんにちわ、</B><BR>");
docement.write("<font size="5">ヨッシーです。</font>");

のように書けばいいんだ。
・・・って、本当にいいかな?
確かに、今までの解説だけを見れば正しいし、ほぼ正解といってもいいんだけど、
実際に実行してみるとエラーが出てしまうんだ。
ソース文をよくみてごらん、どこが間違ってるかわかるかな。
実は2行目の
docement.write("<font size="5">ヨッシーです。</font>");
が間違っているんだ。
カッコの中を見てね、"(ダブルクォーテーションマーク)があるよね。
それでくくられた文字がHTML文に書き込まれるんだったね。
つまり、
docement.write("<font size="5">ヨッシーです。</font>");
赤い部分がHTML文にかかれるところだね。
けれど、途中で<font size="5">というふうに、
JavaScriptとは関係のないところで " のマークが出てきてるんだ。
僕らから見れば、これはHTMLの中での " だってわかるけど、コンピューターはそんなことは考えられなくて、
素直にこの " もJavaScriptの命令の一つだと勘違いしてしまうので、表示部がおかしくなってしまうんだ。
つまり、

" <font size= " 5 " >ヨッシーです。</font> "

このように赤の部分で分けて解釈してしまうんだね。
この場合、5(???)の部分でエラーが出てしまったんだ。
なぜなら、これをもう少し解析してみると、

" <font size= "                ←表示部(?)
5
                       ←(???)
"
>ヨッシーです。</font> "
        ←表示部(?)

このようになっちゃうね。
この問題を解決する方法は3つあって、今からそれを見ていこう。

1.docement.write("<font size=5>ヨッシーです。</font>");
数字の5の前後の " を消した
よ。
HTMLでは必ず " がないといけないわけではないので、" を消してやれば問題は解決するんだ。
参考≫HTML講座−−さらによいページを目指すために・・・

2.docement.write("<font size='5'>ヨッシーです。</font>");
" と同じ働きをする '(シングルクォーテーションマーク)を使え
ば、(" と ' は別とみなされるので)問題は解決するよ。

3.docement.write("<font size=\"5\">ヨッシーです。</font>");
\をつかえば、その後ろにある文字は何の働きも持たず、そのまま表示することができる
んだ。
だから、\の後ろにある " はそのまま表示されるので、
<font size="5">ヨッシーです。</font>
というふうに、うまくHTML文に挿入できるんだよ。


back.gif (1116 バイト) next.gif (705 バイト) top.gif (583 バイト)