SSブログ

JavaScriptってすごい! [プログラミング]

こんにちは。昨年秋にMacBook Airを衝動買いした話は前に書きましたが,プログラミングを楽しむにはObjective-CよりもJavaScriptの方が手軽かつ強力であるということがわかってきました。

App Store用のアプリを作るならObjective-Cの方が手堅いのかも知れませんが,時代はWebアプリに向かっている雰囲気もあり,そうであればJavaScriptの方が機種を選ばない分だけ手広そうです。いずれにしても,プロトタイプ作成ツールとしては大いに使えそうなので,この機会に勉強しておこうと思いました。

何冊か本を読んだりぐぐったりしてわかったのは「JavaScriptってすごい!」ということでした。今日は簡単なプログラムを紹介しつつ,そのあたりの話を。いきなりで恐縮ですが,JavaScriptプログラムは以下のとおり。これを拡張子.htmlで保存して適当なブラウザで呼び出すと,だいたい何をやっているかわかると思います。

<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="UTF-8"/>
<title>てすと</title>
</head>

<body>
<p id="info">こんにちは。</p>
<form onsubmit="return change();">
<input type="submit" value="倍増">
</form>
</body>

<script type="text/javascript">
function change(){
document.getElementById("info").innerHTML=document.getElementById("info").innerHTML+document.getElementById("info").innerHTML;
return false;
}
</script>

</html>

初めての方は面食らうかも知れませんが,決して難しくありません。まず,始めの二行くらいはおまじないだと思ってください(ワタクシもよくわかっていません)。以下,<html>・・・</html>のブロックがあり,その中に<head>・・・</head>,<body>・・・</body>,<script>・・・</script>の三つのブロックがあります。このあたりはそういうものだと思ってください。なお,改行やスペースは自由に入れてかまいません。

<head>・・・</head>のブロックは,初期設定関係だと思ってください。ここでは二行ありますが,前の一行は文字コードに関してであり,後の一行はページの表題の文字列を指定しており,ブラウザのいちばん上に表示されます。

<body>・・・</body>のブロックは,そのまま画面表示に直結すると思ってください。ここでは,<p>・・・</p>,<form>・・・</form>の二つのブロックがあります。<p>・・・</p>は「こんにちは。」を表示する段落を表し,<form>・・・</form>はボタンを表します。このボタンを押すとchange()という関数を呼び出しますが,この関数の実態は<script>・・・</script>で定義されています。

<script>・・・</script>はまさにJavaScriptプログラムを記述しているところです。ここではボタンを押した際に呼び出される関数change()を定義しています。具体的には,infoというid(識別記号)を持つオブジェクト,ここでは「こんにちは。」という段落を意味しますが,これの中身(innerHTML)をごっそりコピーして二倍に置き換えています。ボタンを何回か押すと「こんにちは。」で満ちあふれることでしょう。

こんなに簡単なプログラムですが,強力な画面操作ができることがおわかりいただけたでしょうか。次回はグラフィックに挑戦したいと思います。おしまい。

<補足1>htmlファイルの編集はテキストエディタで行うことになりますが,Macだと標準の「テキストエディット」を使うのが手軽でしょう。ただし,環境設定をやっておかないとハマります。具体的には,①書類のファーマットを標準テキストにする,②スマート引用符をOFFにする,③エンコーディングをUTF-8にする。特に②は重要で,Macの場合,全角のダブルコーテーション記号が半角並に「薄い」ので,なかなか見分けがつきません。ワタクシはこれで二日ほどハマりました^^;

<補足2><補足1>の③に関連して,Windows環境でhtmlファイルの編集をメモ帳で行う場合も,ファイル保存時の文字コード指定をUTF-8にしなければいけません。ただし,コード中の<meta charset="UTF-8"/>を<meta charset="Shift_JIS"/>するならば,ANSIのままでよい。

<補足3>関数change()の戻り値をfalseにしているのは,<form>要素にsubmitイベントを渡す際にonsubmitで定義した処理だけにとどめたいためです。<form>要素は,submitイベントを受け取るとaction="・・・"で定義されるウェブリソース(URL)とのアクセスを開始するのが本来の処理ですが,onsubmitで定義した処理に迂回させることもできます。その際,特段アクセスしたいURLがない場合には,onsubmitで定義した処理の最終的な値がfalseにしておけば,本来の処理に届かないというわけです。

<補足4><補足3>の続きですが,そうであれば関数change()をやめて,代わりにonsubmit='document.getElementById("info").innerHTML=document.getElementById("info").innerHTML+document.getElementById("info").innerHTML;return false;'と直接書いてもうまくいきそうですが,なぜかうまくいきません。。

参考URL:http://www.atmarkit.co.jp/fcoding/index/js.html
参考URL:http://www.htmq.com/htmlkihon/index.shtml
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:競馬

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。