« どっかの偉い人?誰それ | メイン | 夏季ゲーム妄想 »
2005年07月19日
JavaScript篇
■学習に使った物
ttp://www.site-cooler.com/kwl/javascript/簡易講座なのでどこまで厳密で、どこまで最近の仕様に対応しているかは不明。
あくまでこの講座を見てのメモ。
■基本的な文法
CのようなJAVAのような、まあ、ありきたりな文法。
変数宣言は必要無い。
型はvarのみ。
■JAVA?
よく言われている事だが、勿論JAVAでは無い。
Netscape社の陰謀らしい。何て迷惑な事をしてくれるんだ。
でも、array.lengthとかできるのはJAVAっぽい。
new演算子あるし。
■配列
添え字のチェック無し。
連想配列とか見てると宣言時の要素数は何の意味があるのかわからなくなってくる。
当然
var array = new Array(0);
array[0] = "Zero";
array[1] = "One";
array[2] = "Two";
は可能だし、
array["Zero"] = 0;
array["One"] = 1;
array["Two"] = 2;
も行ける。
これで大丈夫なのかはよくわからないけれど、きっと大丈夫なのだろう。
さらに、この配列には便利な機能が搭載されている。
sortとreverseはどんなアルゴリズムを使っているのかは知らねど、ソートしてくれるし、
join('/')で全要素の結合も可能。
区切り文字だけでなく、文字列も使えたらいいのに。
もっとも、単純にCVS形式とかに変換してファイルに出力とかに使うのを想定してるのかな?
■条件分岐
一般的なif-else,switchが使える。elseにぶら下げてelse ifも可。
(当然、一行の場合には{ }を書かなくてもいいって事)
■ループ
for/while/do-while
Cと同じような感じ。
厳密に全く同じかまではわからないけれど。
■関数
記憶クラスやら戻り値の型指定やらは無し。
function myfunc(val1,val2,...){
}
こんな感じで書く。
どうせ型はvarしか無いしって事で引数リストに型は書かない(書けない)。
returnも当然普通に使える。
スコープ
最近のインタプリタなら関数内の変数はローカルにしてくれる事と思います。
グローバル変数の扱いについてはCと同じですね。
(もっとも、この場合Cで考えるとmain関数内の変数がグローバル変数になる、わけですが)
■イベントドリブン
なんかタグに対して書くのが変な感じ。
フォームの要素に対して書くとVBっぽいイメージで直感的に理解できますが、
アンカータグなど、普段普通にクリックする対象、されど目的は一意であった為に違和感を感じますね。
<a href="#" onClick=HookClick()>Click here!</a>
こんな感じ。
もちろん、
<font color="#0000FF" onClick=HookClick()>こっちでもいいです</font>
こんなのもあり。
#fontタグを使うなってのは無し
普通に使いそうなイベント
- onClick
-
onMouseOver
なんかこう、ClickとMouseOver組み合わせてaタグを使わないけど見た目はaタグ使用時と同じ、
という虚しい似非アンカーもできますね。 - onDblClidk
- onMouseDown
- onMouseUp
- onMouseOver
- onMouseOut
- onKeyPress
- onKeyDown
- onKeyUp
- onChange
- onFocus
-
onLoad
色々使うと、果てしなく気持ち悪い事ができそうです。
あんまりウェブページにおいてこのような事はしない方がいいとやっぱり思うけどなあ。
古いか、考えが、やっぱり。
■フォームとの連携
documentは、そのHTMLファイルを表す。
name属性を使って階層を掘れるみたい。
document.writeはdocumentオブジェクトの持つwriteメソッドです。言うまでも無いか。
だから、name属性にwriteとか指定したらダメですよ!
■inputbox
function ShowForm(){ document.write(document.frm.txt.value); } <form name="write"> <input type=text name="txt" /><br> </form> <font color="#0000FF" onClick=ShowForm()>クリックしてね</font>
こんなの。
偽リンクボタン、ちょっと気に入ったかも(笑)
厨房的ですね。
あと、最初の方でJSの型はvarのみと書きましたが、
当然オブジェクトへの参照もvar型なのでオブジェクトを渡せます。
function ShowForm(obj);
に対して
ShowForm(txt);
といった所。
関数においてはobj.valueとするわけですな。
もちろん、valueからの読み込みだけでなく書き込みもできます。
単にobj.valueに代入するだけ。簡単ですね。
■radio button
参照においては、thisを使えます。
さっきので言うとShowForm(this)ですね。
もっとも、あの場面では使えませんが。
ラジオボタンにおいてはこれを有効に使えます。
<form name=frm>
<input type="radio" name="rd" value="rd1" onClick=rd_Click(this)><br>
<input type="radio" name="rd" value="rd2" onClick=rd_Click(this)><br>
<input type="button" value="Click" onClick=ShowResult()><br>
</form>
これ、実際問題name=rd1,rd2とやってthisじゃなくてそっち渡しても当然行けるわけですが、
悲しい事にnameを同じにしておかないと複数選択が可能なラジオボタンになっちゃうんですよね。
もちろん表示上だけの話なんですが。
なので、thisを渡すのがいいでしょう。
■check box
なんかもう、ここまで書いたら蛇足でしかないんですけど、
別に参照できるのはvalueだけなわけでは無いのです。
はい、当然チェックボックスのchekedプロパティも同様に扱えます。それだけ。
ただし、格納されている値はTrue/Falseですよ。まあ、当然と言えば当然なんですけど。
■form
frm.elements
- >フォームに存在する全てのオブジェクトを要素に持つ配列
要は複数のコントロールを処理するコードをループに突っ込んで楽しようって話です。
■document
documentオブジェクト
- bgColor = (#000000|black)
-
fgColor/linkColor/vlinkColor/alinkColor
まあ、活用次第かなあ。
あんまり使い道無さそうだけど、例えばシナリオリーダーで既に読んだとこを色付けするとかそんなの。
-
title
タイトル。それだけ。
-
URL
うーん……使い道は?
あるのかなあ、やっぱりあるんだろうなあ。
-
referrer
JavaScript禁止にすると見れないようにして、リファラを監視。
これだけでかなり鬱陶しいページにできる。
これをすると、何も知らずにNISをデフォルトで使ってる人が直撃を受けるし、
あんまりやらない方がいいと思う。
-
lastModified
最終更新日。
■ウィンドウ操作
鬱陶しいサイトを構築する最も手っ取り早い手段。
ブラクラも簡単に作れる。
操作対象オブジェクトは
window
-
alert(msg)
あらーと
-
confirm(txt)
Yes/Noダイアログ。
戻り値はTrue/False
-
prompt(txt,default);
戻り値は入力された文字列。
何も入力されなかった場合はnull
-
status
window.status="ステータスバーへの文字列出力";
なんと下らない処理なんだ……。
こんな物どうしろと。
ここから下はあんまり使わない方がいいんじゃない?と思う。
というより、使って欲しくない。鬱陶しくなるから。
-
resizeTo(width,height)
そのまんま、サイズを変える。
-
resizeBy(width,height)
今のサイズからの差で変更後のサイズを指定
-
moveTo(x,y)
鬱陶しい処理の真打登場。
インターバルと組み合わせて飛び回るウィンドウとか嬉しがるのは辞めてください。
誰に対して言ってるのかはわかりません。
-
moveBy(x,y)
位置も相対指定できます。
- open(URL)
while(1){
window.open("./brcr.html"); //^^ }
戻り値にウィンドウハンドルを取る。
これを利用して開いたウィンドウを操作する事も可能。
なんてこった。
■タイマー
ウィンドウオブジェクトのメソッドのはずなんだけど……。
setTimeout単体で指定できます。
-
setTimeout("func()",5000)
第一引数はタイムアウト時に実行する関数。何で文字列にしてるんだろ・・・
第二引数はタイムアウトまでの時間
戻り値はタイマID
-
clearTimeout(TimerID)
引数に指定したタイマを削除
- setInterval("func()",5000)
普通、タイマと言えばこっちでしょう。
第一引数は指定周期毎に実行する関数、
第二引数は周期指定。
返り値はタイマID。きっちり削除して後を濁さないよう。
■RegExp
正規表現、だけれどこれは今はいいでしょう。
一つ言える事は、他と大して変わんない。
投稿者 miff : 2005年07月19日 21:49