').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); var _link = items[i].getElementsByTagName("link")[0].firstChild.nodeValue; this.linkArray.push(_link); var description = items[i].getElementsByTagName("description")[0].firstChild.nodeValue; this.descriptionArray.push(description); var pubDate = items[i].getElementsByTagName("pubDate")[0].firstChild.nodeValue; this.pubDateArray.push(pubDate); } }
一旦我们把所有的值存储在数组中,当我们准备好显示页面中的数据时我们就能够使用它们。这个对象中的第三个方法集中于显示回馈中的数据:
· GetTitle负责得到回馈标题(作为一个切换项标题的链接,通过调用Aggregator的toggleTitles方法来实现)。
· GetAllTitles简单地从回馈中返回所有的项标题。
· GetDetails负责实现显示该回馈所有的细节。这个方法基于作为一个参数传递的ID检索Feed对象的数组中的值。然 |