もちろん、変数btnPrevやbtnNextに値が入った後に挿入しなければならない。doAttachEventメソッドの第1引数はイベントを登録するオブジェクト、第2引数はイベント名、第3引数はイベント発生時に呼び出されるべきメソッドである。
doAttachEvent(btnPrev, "click", channelPrev);
doAttachEvent(btnNext, "click", channelNext);
ここでは、channelPrev, channelNextというメソッドがまだ存在しないため、改めて記述する必要がある。両者で共通に使われる機能は、別途channelChangeメソッドを作ってまとめておこう。
処理内容は、要するに変数m_feedSelectの値を増減し、それに応じてチャンネルのタイトルとURLを差し替えているだけである。
function channelChange()
{
m_channelNameEl.innerText = " *** " + m_feedList[m_feedSelect].name + " *** ";
m_feedUrl = m_feedList[m_feedSelect].url;
GetFeed();
}
function channelPrev()
{
m_feedSelect--;
if( m_feedSelect < 0 ) m_feedSelect = m_feedList.length-1;
channelChange();
}
function channelNext()
{
m_feedSelect++;
if( m_feedSelect >= m_feedList.length ) m_feedSelect = 0;
channelChange();
}
以上の書き換えを行ってからブラウザをリロードし、ボタンをクリックするとエラーが起きてしまうはずだ。サンプルソースに、ClearFeedという存在しないメソッドの呼び出しが含まれるためだ。
ClearFeedメソッドの呼び出しは、コメントアウトしておこう。
//ClearFeed();
そして実行させてみると、リロードしても同じ画面しか出てこない。初期化の時に適切なフィードを指定するコードをまだ入れていないためだ。しかし、イベント処理のコードは既に入っているため、矢印ボタンをクリックすると、タイトルが書き換わり、新しいフィードが追加される具合だ。
ここまで来れば、残された作業は難しくないだろう。
Copyright © ITmedia, Inc. All Rights Reserved.