人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptに関する質問です。
下記のコードをHTML内に記述します。おなじHTML内のある要素に対して、clickイベントとして"slime.func()"を割り当てたいとき、どうやればよいのでしょうか。
イベントハンドラ内のthisがslimeオブジェクトではなくDOMのオブジェクトを指すことは [http://builder.japan.zdnet.com/sp/javascript-kickstart-2007/story/0,3800083428,20371112,00.htm:title] などを見て理解しましたが、ではそういう場合はどうすればよいの、という質問です。
なおprototype.jsなどのライブラリは使用できない状況とお考えください。


――― [code] ―――

var Monster = function() {};

Monster.prototype = {
initialize: function(name) {
this.name = name;
},

func: function() {
alert(this.name + " has shown up.");
}
};

window.onload = function() {
var slime = new Monster("slime");
}


●質問者: room661
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Click DOM HAS HTML JavaScript
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● GoldenDawn
●60ポイント

質問の的を外しているかもしれませんが、

window.onload = function() {
 var slime = new Monster("slime") ;
}

関数内で var を付けて宣言するとそのオブジェクトのスコープは関数内に制限されます。

つまり他からはアクセスできません。

window.onload = function() {
 slime = new Monster("slime");
}

var 無しにするとグローバルオブジェクトになるので

<div onclick="slime.func();" name="hoge">click me</div>

とかで呼び出すことができます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ