webmasterです。
KAIRIさんがされようとしていることはAjax的で非常に興味深く、詳しく
解決策を提示させて頂きたいところなのですが、現在なかなかサポートに
時間を取ることが難しく、概念的な話でしか情報を提示できないことを
お許しください。m(_ _)m
それにしても、javascriptにお詳しくないとのことですが、見よう見まねでも、
あれだけの情報で例の方法を実現されたのは凄いと思います。
今回の件ですが、概念的な話のみ書かせて頂きます。m(_ _)m
まず、以下のようなリスト項目がある事を前提に話を進めます。
コード: 全て選択
<data name="photolist" type="list" caption="画像リスト" >
<listitem caption="画像">
<data name="photo" type="img" caption="画像" />
<data name="photocomment" type="text" caption="画像のコメント" />
</listitem>
</data>
元画像の下に、「画像のコメント」も一緒に表示したい、というご用件と
認識しております。
考え方としては、
・常に全てのコメントをHTMLとして出力しておき、
・画像クリック時に、必要なコメントのみ、表示させる。
(その歳、元のコメントは非表示にする)
という方法になります。
コメント1つ1つをdivタグで囲み、そのdivタグのidにリスト項目のIDをつけます。
そして、そのdivタグをjavascriptを使って「表示/非表示」させます。
コード: 全て選択
<xsl:for-each select="photolist/listitem">
<div id="cmt{@id}" class="comment"><xsl:value-of select="photocomment" /></div>
</xsl:for-each>
こう書くことで、各listitemに振られたリスト-IDを、コメントのdivのidと
関連付けることができます。(この例では、単純にid="00000001"ではなく、
id="cmt00000001" のように頭に"cmt"と付けました。)
CSSにて、div.comment を非表示にします。
例えば、 display : none; を指定することで非表示にできます。
次に、画像クリック時に呼び出していた changeLargeImage() の後に、
対応するコメントを表示させる呼び出しを加えます。
コード: 全て選択
<a href="#" onclick="changeLargeImage('{photo}');showComment('cmt{@id}');return false;"><img src="{photo}&w=100" /></a>
ここの showComment('cmt{@id}'); の部分がそれです。
showCommentはご自分で定義する必要があります。
この関数の中で行う必要がある処理は、以下の通りです。
(1) 現在表示されているコメントを非表示する。
(2) 引数で与えられたidを、javascript の getElementByIDで探し、
表示する。(style の display : block;を指定する、など)
(3) 今表示したidを、グローバル変数に保存しておく。
(次回呼び出し時に(1)の処理で使う為)
showComment の書き方として、もう一つ、非表示のコメント一覧以外に
「コメント表示用のdivタグ」を用意し、非表示のコメント一覧から必要なコメント
をinnerHTMLで引っ張ってきて、コメント表示用のdivタグにinnerHTMLで
コピーする、という手もあるかと思います。こっちの方が(1)と(3)の処理が不要な
分、楽かもしれません。
以上、それなりにjavascriptに慣れた方でないと難しいかと思いますが、
ネットなどで「javascript 表示 非表示」などのキーワードで探すといろいろ
出てきますので、ご参考になさってください。
例:
http://www.geocities.jp/monalipse/javas ... splay.html
例:
http://hp.xrea.jp/m/link/38.html
ご不明な点はまたご質問頂ければと思います。