私はこの問題を解決するために何時間も探してきました。私はprototype.js 1.6.0.1を使用してテーブルを作成していますが、.each関数のコンテキストでこのオブジェクトに問題があります。ここにスニペットがあります。prototype.jsの無名関数内の "this"に関する質問。それぞれのメソッド
var Table = Class.create({
initialize : function(id) {
this.elmnt = $(id);
this.rows = [];
},
initRows : function() {
$A(this._elmnt.tBodies).each(function(body) {
$A(body.rows).each(function(row) {
//right here is where i would like to call
// this.rows.push(row);
console.log(this); // prints DOMWindow
});
});
}
});
2番目の.each関数の内部にあるように、これはDOMWindowに解決されます。私はthis.rows.push(row)
に電話することができるようにしたいと思いますが、 "これ"が期待どおりに解決していないため、できません。
ご協力いただければ幸いです。私は標準(私は0;私は<長さ、私は+ +)ループを行うことができる知っているが、私はこれを少しきれいにしようとしていた。あなたが提供できるガイダンスをありがとう。
'Table'オブジェクトに行のコレクションを維持する理由はありますか? 'HTMLTableElement'は既に独自のコレクションを保持しています。 'this.elmnt.rows'または' this.elmnt.tBodies [0] .rows'です。 – user113716
https://developer.mozilla.org/en/DOM/table.rows – user113716
これは、私が 'each()'をオーバーライドする実装が気に入らない理由です。そしてなぜ私はコーヒースクリプトが好きなのですか?それは非スコープの導入と非コンテキストのレイピングアレイ反復です。 –