dポイントプレゼントキャンペーン実施中!

例えばjavascriptで下のようなコードを書いたとします。

a=new Array()

a[0]=new OBJ();

function OBJ(){
this.prop=document.getElementById('aaa')
this.prop2=document.getElementById('bbb')
}

a[0].prop.addEventListener(click,func,false);

function func(){
???
}

func()関数内でthisを使うとa[0].propを参照できます。
一方、a[0].prop2を参照するにはどうすればいいのでしょうか?
配列の要素番号を指定しないで参照させる方法が分からず悩んでいます。

下のようにもしできるのであればいいのですが。。。
a[0]とpropのオブジェクトを分割->a[0]オブジェクトを抜き出し->
a[0]オブジェクトにprop2を追加

または別の方法があるのでしょうか。
ぜひぜひご回答のほどお願いいたします。

A 回答 (2件)

>func()関数内でthisを使うとa[0].propを参照できます。


ここで、this は、a[0].prop というより、
document.getElementById('aaa') なのでa[0]とは関係ありません。
まどろっこしいですが
例えば、こんな感じにはできます。
a = new Array();
a[0]= new OBJ();
function OBJ(){
this.prop=document.getElementById("aaa");
this.prop2=document.getElementById("bbb");
}
OBJ.prototype.func = function(){
alert(this.prop.id);
alert(this.prop2.id);
};
a[0].prop.addEventListener("click",func,false);

function func(){
a[0].func();
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
確かにこの方法でa[0]をthisとして使えます。
少し説明が足りなかった点があったのですが、私がやりたいのはイベントリスナーで呼び出した関数(とういかオブジェクトですね)内で、配列の引数を指定せず対象の配列を使うことです。
addEventListenerの第二引数で配列要素番号を引数として渡せればいいんですけれど。。。

お礼日時:2006/07/21 20:07

#1>私がやりたいのはイベントリスナーで呼び出した関数(とういかオブジェクトですね)内で、配列の引数を指定せず対象の配列を使うことです


意図するところを理解してないワケではなくて
#1で説明している通り、
>a[0].prop.addEventListener(click,func,false);
は、a[0]のオブジェクトに関してイベントを設定しているわけではありませんので、クリックイベントによって呼び出される関数(オブジェクトではない)でのthisは、id='aaa' のオブジェクト(エレメント)であってa[0]ではありません。(a[0]とは関係ない)
だから、このような(質問者の)方法ではムリです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。納得です。a[0]は関係ないのですね。コードを変えて別の方法でやってみます。

お礼日時:2006/07/23 15:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!