observe
分かっている人には分かっている事。
ちょっとはまったので、備忘録として。
以下、prototype.js という JavaScript のライブラリの話。
まず、これが第一段階。
ロード時に、無名関数を使ってウホッと警告を出します。
むしろウホッに対する警告?
まあ、それはともかく、ここまではOK。
次の段階。
さっきのを、関数でやっているだけです。
ここまでもOK。
そして次。
たとえとしてよくありませんが、これがなぜかうまくいかない。
具体的には、読み込んだ瞬間にアラートが出て、後は handler が云々いうエラーになってしまいます。
おかしいと思ったら、observeで呼び出されたメソッドには、必ずイベントオブジェクトを引数に持たせないといけないんですね。
これは確かに動きます…が、何か冗長な感じですね。
イベントを引数に持たせるとして、二つ以上の引数を渡す方法はないものか…?
まとまった資料がないため、JavaScript はどうしても体当たりで覚える方式になりがちです。
求む、よい資料。
ちょっとはまったので、備忘録として。
以下、prototype.js という JavaScript のライブラリの話。
window.onload = function (){
alert("ウホッ");
}
まず、これが第一段階。
ロード時に、無名関数を使ってウホッと警告を出します。
むしろウホッに対する警告?
まあ、それはともかく、ここまではOK。
次の段階。
window.onload = function (){
alertUho();
}
function alertUho(){
alert("ウホッ");
}
さっきのを、関数でやっているだけです。
ここまでもOK。
そして次。
window.onload = function (){
Event.observe("div001", "click", func001(1), false);
Event.observe("div002", "click", func001(2), false);
}
function func001(num){
alert("IDはdiv00" + num + "です");
}
たとえとしてよくありませんが、これがなぜかうまくいかない。
具体的には、読み込んだ瞬間にアラートが出て、後は handler が云々いうエラーになってしまいます。
おかしいと思ったら、observeで呼び出されたメソッドには、必ずイベントオブジェクトを引数に持たせないといけないんですね。
window.onload = function (){
Event.observe("div001", "click", callBy1, false);
Event.observe("div002", "click", callBy2, false);
}
function callBy1(e){
func001(1);
}
function callBy2(e){
func001(2);
}
function func001(num){
alert("IDはdiv00" + num + "です");
}
これは確かに動きます…が、何か冗長な感じですね。
イベントを引数に持たせるとして、二つ以上の引数を渡す方法はないものか…?
まとまった資料がないため、JavaScript はどうしても体当たりで覚える方式になりがちです。
求む、よい資料。