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");
}

回答の条件
  • 1人2回まで
  • 登録:2008/09/02 15:49:35
  • 終了:2008/09/02 16:27:02

回答(1件)

id:GoldenDawn No.1

GoldenDawn回答回数426ベストアンサー獲得回数812008/09/02 16:17:11

ポイント60pt

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

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>

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません