次の 2 つのオプションがあります。
すべての RSS フィードを事前に読み込み (<ul>
例のページの は RSS フィードの HTML 出力だと思いますか?)、ドキュメントが読み込まれるときにそれらをすべて非表示にし、選択したとおりに表示します。
AJAX を使用して、選択ボックスの変更に応じて選択されたフィード情報を動的に取得します。
前者を実行する JavaScript と jQuery のバージョンの簡単な例を次に示します。
html:
<select id="showRss">
<option name="feed1">Feed 1</option>
<option name="feed2">Feed 2</option>
</select>
<div id="rssContainer">
<ul id="feed1">
<li>feed item 1</li>
<li>...</li>
</ul>
<ul id="feed2">
<li>feed item 2</li>
<li>...</li>
</ul>
<!-- etc... -->
</div>
JavaScript:
var rss = document.getElementById('rssContainer'); // main container
var nodes = rss.getElementsByTagName('ul'); // collection of ul nodes
var select = document.getElementById('showRss'); // your select box
function hideAll() { // hide all ul's
for (i = 0; i < nodes.length; ++i) {
nodes[i].style.display = 'none';
}
}
select.onchange = function() { // use the 'name' of each
hideAll(); // option as the id of the ul
var e = this[this.selectedIndex].getAttribute('name');
var show = document.getElementById(e); // to show when selected
show.style.display = 'block';
}
hideAll();
jQuery:
$('#showRss').change(function() {
$('#rssContainer ul').hide('slow'); // added a bit of animation
var e = '#' + $(':selected', $(this)).attr('name');
$(e).show('slow'); // while we change the feed
});
$('#rssContainer ul').hide();
オプション 2 を実行するには、onchange
関数が AJAX の読み込みを処理します。AJAX にあまり詳しくなく、フィードがいくつかある場合は、オプション 1 がおそらく最も簡単です。(繰り返しますが、RSS を HTML として解析済みであると仮定しています。これはまったく別のトピックです)。