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 16:27:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:GoldenDawn No.1

回答回数426ベストアンサー獲得回数81

ポイント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>

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

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

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

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

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

回答リクエストを送信したユーザーはいません