2011-08-05 20 views
0

setIntervalメソッドを使用してRssフィードを読んで、ユーザーに通知を表示しています。最新のフィードタイトルを保存して、もう一度同じタイトル。だから私はグローバル変数を宣言するglobal_Rsstitle私のnotification.jsの上に。今度はのentry_titleの値をグローバルvarに渡そうとします。その値は、setintervalメソッドの呼び出し後にグローバル変数に保持されません。 entry_titleの値を保存し、同じタイトルの複数の通知を避けるためにsetIntervalメソッドが呼び出されるたびにチェックする方が良いでしょうか。グローバル変数内に値を格納できません

マイnotification.js

/** global variable **/ 

var global_Rsstitle; 

/** end global variable **/ 
function get_rss1_feeds() { 

    var Rss1_title = getRss("http://rss.cnn.com/rss/cnn_topstories.rss", function(entry_title) { 
     if(global_Rsstitle != entry_title) 
     global_Rsstitle = entry_title; 
     console.log('test',global_Rsstitle); // the value is outputed but global var is not working 
    }); 
console.log('test1',global_Rsstitle); // outputted as undefined ?? 
    } 

    google.load("feeds", "1"); 
    google.setOnLoadCallback(function() { setInterval(get_rss1_feeds, 5000); }); 

マイjsRss.jsあなたはglobal_Rsstitle;という変数を定義しますが、あなたのコードの中であなたがRsstitleを使用

function getRss(url, callback){ 
    if(url == null) return false; 

    // Our callback function, for when a feed is loaded. 
    function feedLoaded(result) { 
     if (!result.error) { 
      var entry = result.feed.entries[0]; 
      var entry_title = entry.title; // need to get this value 
      callback && callback(entry_title);   
     } 
    } 
    function Load() {  
     // Create a feed instance that will grab feed. 
     var feed = new google.feeds.Feed(url); 
     // Calling load sends the request off. It requires a callback function. 
     feed.load(feedLoaded);  
    }  
    Load();    
} 
+0

getRSSを呼び出すと、entry_titleの値は何ですか?価値が正しいことは確かですか? – scrappedcola

+0

はい、私はconsole.log( 'test'、global_Rsstitle);という値が正しいです。私はentry_titleの出力を見ることができます。 –

答えて

2

global_Rsstitleを設定しないでください。Rsstitleを設定しないでください。

var global_Rsstitle; 

/** end global variable **/ 
function get_rss1_feeds() { 

    var Rss1_title = getRss("http://rss.cnn.com/rss/cnn_topstories.rss", function(entry_title) { 
     if(global_Rsstitle!= entry_title) 
     global_Rsstitle = entry_title; 
     console.log('test',global_Rsstitle); // the value is outputed but global var is not working 
    }); 
} 

UPDATE

あなたは正しい、応答が戻ってくるまで、その変数を使用傾けることを実現していますか?言い換えれば

、あなたはこれを行うことはできません。フィードが読み込まれると、変数が割り当てられる前に、アラートがトリガーとなりますので、それはさらに悪いことに...

get_rss1_feed(); 
alert(global_Rsstitle); 

を、あなたが遅延していますあなたの間隔で実行。

+0

申し訳ありませんが、私はそれをチェックしてコードを貼り付けた。それはタイプミスでした。私はそれを変更しました。しかし、これは動作しません! –

+0

私は同じことをしましたが、各呼び出しでグローバル変数はそれを格納していません。そして、私は関数の範囲外でもそれにアクセスすることはできません。 –

+0

値を取得して保存するための解決策がありますか? –

2

を提出。それらは2つの異なるものです

+0

申し訳ありませんが、ここにコードを貼り付けたときはタイプミスでした。私はglobal_Rsstitleがそれを格納していない各呼び出しで –

+0

を修正しました。そして、私は関数の範囲外でもそれにアクセスすることはできません。 –

+0

今すぐコードを確認してください。グローバルに値を保存しません!! –

1

宣言の後、var global_Rsstitle;は何も割り当てません。それはある表現のLHS上にある必要があります。変数にglobal_を追加してもグローバルにはなりません。それは関数の外でそれを定義します。

+0

申し訳ありませんが、それはタイプミスでした。私は今すぐ自分のコードを変更しました! –

+0

今すぐコードを確認してください。グローバルに値を保存しません!! –

関連する問題