アプリ版:「スタンプのみでお礼する」機能のリリースについて

イベントリスナーの部分で、「load」以外に「change」も必要になったので関数にしたいのですが、
引数の関数の指定方法がわかりません。

どうすればいいのでしょうか。よろしくお願いします。

【イベントリスナーを関数にする前】

function hoge(){

this.view = function(){
var _this = this;
window.addEventListener( 'load',function(){ _this.foo()}, false );
}

this.foo =function(){
var txt = document.createTextNode( this.moji );
document.body.appendChild( txt );
}
}

var a =new hoge();

a.moji="テスト";
a.view();


【やってみたこと】

function hoge(){

this.view = function(){
var _this = this;
var func = function(){ _this.foo()};
this.addListener( 'window', 'load', func );
}

this.addListener = function(elem,type,func){
elem.addEventListener( type,func, false );
}

this.foo =function(){
var txt = document.createTextNode( this.moji );
document.body.appendChild( txt );
}
}

var a =new hoge();

a.moji="テスト";
a.view();

A 回答 (3件)

単純に



this.addListener( 'window', 'load', func );



this.addListener( window, 'load', func );

にするのではだめなの?
    • good
    • 0
この回答へのお礼

ありがとうございます。

お返事が遅くなってすみません。
「'window'」を「window」にするとできました。

windowには、特別な意味があるみたいですね。
知りませんでした。

本来なら、問題が解決したので質問を閉め切りたいのですが、
load以外のイベントでエラーが出るかもしれません。

それを試してから質問を閉め切ることにします。

お礼日時:2014/05/05 13:41

onchange の要素は、どこで指定する?まさか window にではなさそうですが・・・



a.view ();が呼ばれる度に、同じイベントをくっつけるのは、どうでしょう?

1回きりの呼び出しで、しかもbodyの最後に追加していくだけなのなら、別な方法がよいかも ?

細かいことですが、body要素の直下に、テキストノードがあるのも、どうでしょう?

this.foo を、xxxxx.addEventListner ('change', this.foo.bind(this), false);みたいにするのは、どうでしょう?





こそっと、違いがわかりません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お返事が遅くなってすみません。

今回の例は、今書いているプログラムのわからないところだけを抜き出して書きました。
だから、body要素の直下にテキストノードがあります。

'window'をwindowにすると、文字が表示されました。
load以外のイベントも試してから、この質問を終わりにしようと思っています。

ありがとうございました。

お礼日時:2014/05/05 13:51

いまいち何をしたいかわからないのですが、


loadをaddEventListerのをelemにではなくwindowにしてみては?
    • good
    • 0
この回答へのお礼

ありがとうございます。

>いまいち何をしたいかわからないのですが、

前回、別の質問をしました。
http://oshiete.goo.ne.jp/qa/8557126.html

そして、解決したのでプログラムを書いてみました。
「load」を教えてもらった方法で書きました。

次に、「change」も同じ方法で書きました。
同じイベントリスナーを使うなら、関数にしてしまえ!と思って関数にしたのですが、
引き数に入れた関数が動きません。

そこで、今回の質問をしました。

「window.addEventListener( 'load',function(){ _this.foo()}, false );」の部分を
「load」以外のイベントで使えるようにするには、これをどのように書けばいいのでしょうか。
その場合の、引き数の関数はどのように指定すればいいのでしょうか。

お礼日時:2014/05/01 20:23

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