在该Read方法中,我们要做的第一件事情是分析RSS回馈中的标题,链接和项。一旦我们拥有这些值,我们就可以创建一个新的Feed对象(我们将在后面集中讨论)。这个对象使用了feedCollection的长度(作为一个ID),以及标题,链接和来自回馈的项。然后,该Feed对象被添加到 feedCollection和一个称为displayFeedTitles的方法中以便在该Feed对象中显示相应于每一项的标题。
| Aggregator.displayFeedTitles = function(feed) { document.getElementById('titles').innerHTML = feed.GetTitle(); Aggregator.DisplayTitles(feed.id); } |
这个方法以Feed对象作为一个参数,显示它的标题,然后调用另一个称为DisplayTitles的方法:
| Aggregator.DisplayTitles = function(id) { var titleArray = Aggregator.feedCollection[id].GetAllTitles(); var titles = document.createElement("div");
titles.id = "subTitle_" id; document.getElementById('title_' id).appendChild(titles); for(var i=0; i<titleArray.length; i ) { titles.innerHTML = titleArray[i] "<br />"; } } |
这个方法接收一个回馈ID并使用它从feedCollection数组中检索回馈并且得到它的所有标题。一旦接收到这些标题,我们将为该回馈中的项标题创建一个新的DIV元素并且把它添加在相应于特定的回馈的标题之后。这将允许我们通过点击回馈标题来切换显示内容中项的标题。一旦添加该新的DIV元素,我们只需简单地遍历所有的标题并且把它们到添加该新的DIV即可。
上面两个方法中的第一个用于实现切换回馈中项的标题,第二个方法负责显示一个在index.html文件中使用我们的描述DIV元素中的回馈的内容。这些回馈的内容通过Feed对象的GetDetails方法进行收集(在下一节当我们创建Feed对象时再讨论)。
| Aggregator.ToggleTitles = function(id) { var titles = document.getElementById('subTitle_' id); titles.style.display = (titles.style.display == '') ? 'none' : ''; } Aggregator.DisplayFeed = function(feedId, id) { var details = Aggregator.feedCollection[feedId].GetDetails(id); document.getElementById('description').innerHTML = details; } |
六、 Feed对象
这个Feed对象是一个 prototype。通过它的构造器函数,Feed对象接收当我们在Aggregator对象中创建它时传递的所有参数。这些参数分别相应于回馈的ID,标题,链接和项。在这个函数中,我们设置所有的缺省值,创建一些数组以备后用,并且把项发送到一个称为parseItems的方法。在这个 parseItems方法中,我们将检索我们的回馈项中的所有的值并且填充我们在构造器中创建的那个数组。
| Feed.prototype.parseItems = function(items) { for(var i=0; i<items.length; i ) { var linkTitle = items[i].getElementsByTagName("title")[0].firstChild.nodeValue; var title = "<a href='#' class='title' onclick='Aggregator.DisplayFeed(" this.id ", " i ");'>" linkTitle "</a>"; this.titleArray.push(title); this.linkTitleArray.push(linkTitle); |

