0

ループが結果を複製する理由がわかりませんか?kalRss =rssurlからRSSフィードを取得しようとしています。それはすべてを取得しますが、奇妙な方法でエントリを複製します。ファイアバグコンソールを見ると、エントリが3つしかないことがわかります。http://www8.umu.se/project/rut/display/index.html

<script src="https://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
    google.load("feeds", "1");
    var kalRSS = "http://www.upc.umu.se/om-upc/kalendarium/prenumerera/kalender-rss/?categories=concert,conference,courseEducation,culturOnCampus,dissertation,exhibition,lecture,licentiateSeminar,meeting,theOthers,seminar,seminarSeries,workshop&whoCanAttend=employees&calendarIds=69&fromSiteNodeId=45897";
    function initialize() {
        console.log("initialize");
        var container = $('#dailyFeed');
        container.empty();
        //var feed = new google.feeds.Feed("http://fastpshb.appspot.com/feed/1/fastpshb");
        var feed = new google.feeds.Feed("http://www.upc.umu.se/om-upc/kalendarium/prenumerera/kalender-rss/?categories=concert,conference,courseEducation,culturOnCampus,dissertation,exhibition,lecture,licentiateSeminar,meeting,theOthers,seminar,seminarSeries,workshop&whoCanAttend=employees&calendarIds=69&fromSiteNodeId=45897");
        feed.setNumEntries(3);
        feed.load(function(result) {
            if (!result.error) {
                var html = '';
                var entryLenght = result.feed.entries.length;
                console.log("Number of posts: " + entryLenght);
                for (var i = 0; i < entryLenght; i++) {
                    console.log("Loop: " + i);
                    var entry = result.feed.entries[i];
                    console.log(entry);
                    var startTime = entry.content.substr(11, 5)
                    var endTime = entry.content.substr(27, 5)
                    html += '<li class="daily">';
                    html += '<h3 class="georgia">' + entry.title + '</h3>';
                    html += '<h4>' + entry.categories[0] + '</h4>';
                    html += '<p>Info: ' + entry.contentSnippet + '</p>';
                    html += '<p><img src="img/watch.png" class="icon" />' + startTime + ' - ' + endTime + '</p>';
                    html += '</li>';
                    container.append(html);
                }
            }
        });
    }
    google.setOnLoadCallback(initialize);
</script>
4

1 に答える 1

1

ループ内でを実行html += "<li></li>"していますが、ループ内でこの変数をリセットするのを忘れています。したがって、各反復で、ループはこれをコンテナに追加します。

  • アイテム1
  • アイテム1、アイテム2
  • アイテム1、アイテム2、アイテム3

最終結果:

  • アイテム1、アイテム1、アイテム2、アイテム1、アイテム2、アイテム3

修正するには、反復ごとにhtml変数をにリセットします。例:""

for (var i = 0; i < entryLenght; i++) {
    var html = '';
    // rest of your code
}
于 2012-12-03T15:01:37.377 に答える