js - 基本

このページが説明するのは、Windowsユーザを対象にした
htmlも知らなくて、javascriptを始める、ということ。
javascriptそのものの説明(文法)の説明については是非
hackjsを参照願いたい。

html
概念的すぎる説明、一々身近な(と筆者が信じる)物に喩えて説明
するやり方はやめよう。誤解の元凶だ。

インターネットを見る、とは何枚かのwebページを見る、というこ
とである。webページとは結局web上の「ファイル」にすぎない。
1「ファイル」は例えばデスクトップ上やマイドキュメントで
1「アイコン」で表示される。htmlとはファイルの1つの規格で、
webページを作る為に開発されたもののやはり1つに過ぎない。

これは、これから将来、PCを使うにあたって影響を及ぼす大それた ことなのだが、是非次のような設定変更をオススメする。 それは、 1.マイドキュメントを開く(実際には適当なフォルダを開いて構わない 2.ウィンドウ上部のメニューから  「ツール」->「フォルダオプション」  を開く。 3.フォルダオプションの「表示」タブをクリックして表示。 4.「詳細設定」の欄から  「登録されている拡張子は表示しない」  という欄の直ぐ左のチェックを外す。  つまり拡張子を表示させる設定だ。 5.完了。開いたウィンドウは適当に閉じる。 これは拡張子が理解できない輩とMSがトラブルを起こすのを防ぐ意味 で大事な設定だが、プログラミングをするものが拡張子を理解しない では困る。 以下、この設定を行ったことを前提で話を進める。
さっそくhtmlファイルを作ってみよう。 テキスト作成の為のエディタ(editor)の類いのソフトが必要である。 「メモ帳(notepad.exe)」でもよいが、これはエディタではなくて メモ帳だということは認識する必要がある。つまり機能が少ないのだ。 エディタで次のような文章を入力して保存しよう。 ファイル名は「test.html」とでもすればよい。保存すると、保存箇所に アイコンが1つ追加され直ぐ下にファイル名が表示されるはずだ。 もしも「test.html.txt」などとなっている場合、(恐れていたことが 起きた!)エディタの使い方を間違えたのだ。とりあえず、アイコンを 1回クリックして[F2]を押すとか、右クリックすることで「名前の変更」 を行え。さあ、文章はいかだ。(この通りに写せ。当然半角英数である) <html> <head> </head> <body> </body> </html> 君は頭がいいね。 <>に対応して必ず</>が存在するようだ。 <html>と</html>に囲まれる間がhtmlだ、と主張するのが htmlタグ。headタグはページの情報を包含する。例えば、head内に titleタグを書こう。 <html> <head> <title>タイトル</title> </head> <body> </body> </html> またbodyタグは文字通りページの本体である。 試しにbody内に好きな文章(日本語でよい)を書いてみよ。 保存したhtmlファイルはアイコンをダブルクリックすれば、通常インター ネットを見るのと全く同様の振る舞いをする。お前は何も考えなくて良い。 すべては目の前にある賢い箱が考えることだ。ああ、プログラマは虚しい。 プログラムに従う人間なのだから。神を呪う言葉をプログラマは知っている。 JavaScript JavaScriptってのはだからねー。うんとねー。 HTML(大文字に意味なんてない)に対してDHTMLという言葉がある。 HTMLはHyperTextMakeupLanguage(テキストをハイパーにする言葉) DHTMLはDynamicHTML(動的なHTML)。 動的ってのは随分と言葉どおりで本当に動きを与えるもの。 例えば、文章を入れ替えたり、表示してる画像を入れ替えたり動かしたり、 そういうもの。ただ、DHTMLてのも死語みたいなもので、最近はAjax。これだね。 そもそもWeb2.0が少し昔葉流行ったわけよ。ユーザに「俺は今インターネット を使ってる」と意識させないインターフェース、みたいな。Ajaxってのはユーザ が見えない場所でサーバとデータをやり取りするシステム系統のこと。 お察し鋭いですね。そうなんです。DHTMLだろうが、AjaxだろうがJavaScriptが 関係するんです。時にはJavaScriptそのものだったりします。(厳密には、DHTML もAjaxもシステムのことを指すのであって具体的にコレ、というものではありま せん。)とにかく、ただのテキスト以上のある程度のことをするのがJavaScript。 具体的に、どう使うか。HTMLの中で使います。 scriptタグがあります。とりあえず、先のHTMLにおけるhead内にでも使いましょう。 とりあえず、って言ったでしょ? - なんで取りあえずなんよ。 body内じゃないと困ることもあるからです。 - いつ? script内でbodyを扱う場合です。 - 何それ? DOMって知ってる? - 何だとバカにしやがって。白根絵よ あとdocument.write()をhead内で使うと大変だよー - 全部一辺に喋るなバカ。お前のタイミングで言っても全部一辺に覚えれねーんだよ! やってみよう。 HTMLにおけるタグは必要の無いものは別に書く必要ありません。 <html> <head> <title>JavaScriptのてすと。</title> <script> //ここにJavaScriptのコードを書く。 var i; i=1+2+3; alert(i); </script> </head> </html> さてJavaScriptのコードとやらは初めに言ったように別の所で説明してます。 ここでは説明しません。 一応body内で書くパターン(一例)も挙げましょう。 <head> <title>JavaScriptのてすと。</title> </head> <body> こんにちわ。<br> これはjavascriptのテストです。<br> <script> var state="1+2+3"; var i=eval(state); document.write(state+"の計算結果:"+i); </script> </body> </html> 先のbodyタグの説明で、文章を書けと申しましたが、文章の任意箇所で普通に 改行しても、ブラウザで見ると改行されないことに気付きましたか?気付きま したね。<br>で改行します。普通の改行は無意味です。 <br>はbrタグと呼ばれます。</br>なんてものはありません。 そういうのもあるさ。 外部jsファイル プログラマというのはつまりプログラムをする者、という程度の意味ですが、 先頭の「プロ」がプロフェッショナルっぽく見えますね。私はアマチュアで すからアマグラマなんです。そうです。 一流のプログラマともなると、いやならなくても半年位プログラムで遊んでる と外部jsファイルの必要性に気付きます。 外部jsファイルというのは、先に言ったようにhtmlの中にjsコードを直接書く のではなくて、純粋にjsコード(scriptタグ内)だけを書いたjsファイルと htmlファイルを別に用意する。htmlからjsを関連付けさせて、htmlを開くと 直接書いたのと同じ振る舞いをする。 ナゼこんなことをするのか。 第一に物によっては同じjsを複数のhtmlから関係させることができる。一々 htmlに同じコードを書くのは無駄な仕事である。 次はhtmlとjavascriptを別々に編集したほうが綺麗だし人間労働の能率が上 がる、そんな気がする。経験に基づくものである。 実際にやってみよう。 下をそのまま写して「ex_test.js」てな名前で保存する。 var statement="1+2*3"; alert(statement+" = "+eval(statement)); 次にhtml。scriptタグの中のみを消して次のように変更する。 <html> <head> <title>JavaScriptのてすと。</title> <script src="ex_test.js"></script> </head> </html> このhtmlを開くとき、プログラムは上から順に読まれ、scriptを読む時に、 "ex_test.js"を開きそれを読む。"ex_test.js"は相対パスである。つまり htmlファイルから見てex_test.jsなのでhtmlと同じフォルダにある必要が ある。(htmlがデスクトップならex_test.jsもデスクトップだし、) scriptタグの名前"script"のすぐ後ろに半角スペースを噛ましてsrc=""と 書くが、srcはタグの属性と呼ばれる。 もしもjsがbodyを扱うなら<script src="ex_test.js"></script>は body内に書く必要がある。 何かさ。bodyに書く必要、とかさっきから言ってるけど、じゃあ全部body に書けばいいじゃん。 - まあね。 まあね、って何だよ。じゃあ今までのはなんだったんだよ。騙したのか。 - いやね。タイミングってのがあって・・・ 少し触れたように、「スクリプト」(訳したら台本という意味)は上から読み こまれますが、読み込むと即、実行・反映します。scriptに関して言えば、 <script>から</script>までを読み込んだら中身をやはり上から 忠実に実行します。headに書けばbodyを読む前に実行するでしょう。 相対パス、についてもう少し。 あるディレクトリ(例えばマイドキュメント)にhtmlを作ります。 そのディレクトリ内にさらにディレクトリB(フォルダB)を作ります。 Bの中はhtmlからみて"B"または"/B"または"B/"または"/B/"であり、 Bの中に作ったファイル"C.js"はhtmlからみて"B/C.js"または"/B/C.js"です。 絶対パスもあります。大したこと無いのでどうでもいいです。 以上。

戻る---2010/3/2---(c)Kero's World