-1

この for ループで、関数に別の名前 (realname1、realname2、realname3 など) を生成しようとしています。

for(i=0;i<data.results.length;i++) {
    pic = data.results[i].profile_image_url;
    var img = document.createElement("img");
    img.src=pic;
    img.width=50;
    img.height=50;
    img.addEventListener('click', realname, false); //here is the line where I want to change
    document.body.appendChild(img);
    username = data.results[i].from_user_name;
    username_array.push(username);
    text = data.results[i].text;
}
4

4 に答える 4

0
img.addEventListener('click', 'realname_'+i+'()', false);
于 2013-02-08T21:30:41.183 に答える
0

このようなオブジェクトをループの外に追加します

var functionObj = {
  '1':realname1,
  '2':realname2
};

内部では、このようなことができます..

img.addEventListener('click', functionObj[i], false);

編集:タイプミス。

于 2013-02-08T21:31:36.610 に答える
0

理想的には、複数の関数を持つのではなく、パラメーターを渡す単一のより一般的な関数を作成する必要があります。ただし、関数が何をするかを見ないと、具体的に提案することはできません。

あなたがやろうとしていることをする限り、これは関数がどのように定義されているかによって異なります。これらがグローバル関数である場合 (できればそうでないことを願っています)、次のようなものが機能します。

img.addEventListener('click', window["realname"+i], false);

関数が共通のオブジェクト内にある場合は、少し良くなります。

var someobj = {
    realname1 : function(){...},
    realname2...
}

その場合、次のようにします。

img.addEventListener('click', someobj["realname" + i], false);
于 2013-02-08T21:35:27.430 に答える
0

あなたの質問は少しあいまいですが、あなたが何をしようとしているのか推測できると思います。そして、あなたはそれをjavascriptの方法でやっているわけではありません:)

関数を変数に割り当てることができることを知っておく必要があります。そのため、多くの名前で多くの関数を作成する代わりに、それらをループで管理できます。

var somefunctionIjustDid = function(a){ return a+1; }
somefunctionIjustDid(3); //returns 4

2 番目に学びたいことは、JavaScript スコープの基本です。クリックを処理する関数を作成し、それをループ内のさまざまなものにバインドする場合は、次のようになります。

for(var i=...){

someNode.addEventListener('click',(function(){
  var store_i_for_later = i;
  return function(){
    //this here handles the event and has the current i value of the loop execution in store_i_for_later 
  }
})(),false)

}

このメカニズムは閉鎖と呼ばれます。

そして結局のところ、セレクターを2番目の引数としてjQuery.on委任http://api.jquery.com/on/を使用する場合、おそらくそのループはまったく必要ありません。または、jQuery を使用せずにこれを自分で実装することもできますが、それは別の話です。

于 2013-02-08T21:37:06.317 に答える