これはすでに回答されている可能性が非常に高く、適切な検索用語を使用していないため、気分が悪くなります。私は非同期 JavaScript を初めて使用します。ということで、お詫びを申し上げて参ります。誰かが私が正しい検索用語を取得するのを手伝ってくれるなら、私はそれを最も感謝します.
Google フィード API を使用しようとしています。こんにちは世界のセクションで説明されているように、在庫の例に従うと機能します。いくつかの場所で使用できるように、もう少し拡張可能なものを作ろうとしています。だから私はオブジェクトを作成しました...
function AlertRSS(num, url, div, date) {
this.num = typeof num !== 'undefined' ? num : 5;
this.url = typeof url !== 'undefined' ? url : 'http://arstechnica.com/author/caseyjohnston/feed/';
this.sel = typeof sel !== 'undefined' ? sel : '#alert';
this.date = typeof date !== 'undefined' ? date : this.getYesterday();
}
次に、メソッド内でオブジェクトを呼び出そうとします...
AlertRSS.prototype.displayFeed = function() {
var retval = null;
var feed = new google.feeds.Feed(this.url);
feed.load(function(result) {
var tmp = this;
if (!result.error) {
for ( var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
console.log(sel + ' <h2><a href="' + entry.link + '">' + entry.title + '</a></h2><br />');
$(tmp.sel).append('<h2><a href="' + entry.link + '">' + entry.title + '</a></h2><br />');
}
}
});
};
ただし、オブジェクトからプロパティにアクセスできないようです。Uncaught ReferenceError: sel is not defined
コンソールにが表示され続けます。
この問題は範囲に関連していると思いますが、この時点で少し深みがないように感じます。どんな助けでも大歓迎です。
アップデート
最初の投稿としては、これは冗談でした。私のコードには多くの間違いがありました。どちらの回答も正解でした。ただし、私のような別の貧弱な初心者がこの質問を見た場合に備えて、動作するコードを公開したいと思いました。
問題はラインの配置であることが判明しましたvar tmp = this;
。動作させるには、内部コールバック関数の外に配置する必要があります。Tomasz Nurkiewicz の提案に従って、私も に変更var tmp
しましたvar that
。作業コードは次のとおりです。
function AlertRSS(num, url, sel, date) {
this.num = typeof num !== 'undefined' ? num : 5;
this.url = typeof url !== 'undefined' ? url : 'http://arstechnica.com/author/caseyjohnston/feed/';
this.sel = typeof sel !== 'undefined' ? sel : '#alert';
this.date = typeof date !== 'undefined' ? date : this.getYesterday();
}
AlertRSS.prototype.displayFeed = function() {
var feed = new google.feeds.Feed(this.url);
var that = this;
feed.load(function(result) {
if (!result.error) {
for ( var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
console.log(that.sel + ' <h2><a href="' + entry.link + '">' + entry.title + '</a></h2><br />');
$(that.sel).append('<h2><a href="' + entry.link + '">' + entry.title + '</a></h2><br />');
}
}
});
};