JavaScript関連の問題

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
luis
アクティブユーザー
記事: 20
登録日時: 2007年1月08日(月) 17:35

JavaScript関連の問題

投稿記事 by luis » 2007年1月08日(月) 18:49

はじめまして。
他のユーザーさんもJavaScript関連の発言をされていましたが、それを読んでも解決しませんでしたので質問いたします。
どうぞよろしくお願いします。

文章を主とするサイトをCMS Designerへ移行しようとしています。
幾つかのカテゴリの中にそれぞれ幾つかのサブカテゴリを持つ状態をそのまま保ちたいと思っています。
サブカテゴリ毎にエントリのフォルダを作ると30を超えるため、カテゴリ毎にフォルダをまとめ、スキーマのデータ項目にサブカテゴリの番号を入れ、表示時に絞込みをかけることにしました。
スキーマのファイルを作っている時点で、ほとんどのコンテンツが(サブカテゴリ・)表題・副題・本文・補足のような構造であることに思い当たり、スキーマひとつでカバーすることにしました。

以下、サブカテゴリの選択画面のhtml(部分)です。画面左にサブカテゴリ一覧があり、それをクリックすると画面右にサブカテゴリ内のコンテンツ一覧を表示する筈なのですが、うまくいきません。

<html xmlns="http://www.w3.org/1999/xhtml"><head>

<script type="text/javascript">
<!--
var listA='<cmsd:entrylist name="content" design="default" rows="12" pageno="top"><cmsd:group key="catnum" value="0" /></cmsd:entrylist>'
var listB='<cmsd:entrylist name="content" design="default" rows="12" pageno="top"><cmsd:group key="catnum" value="1" /></cmsd:entrylist>'
function setList(myList) {
catlist.innerHTML=myList
}
//-->
</script>

</head><body>

<div id="left"><table><tr><td><a onclick="setList(listA);">サブカテゴリA</a></td></tr>
<tr><td><a onclick="setList(listB);">サブカテゴリB</a></td></tr></table></div>

<div id="right"><table><tr><td id="catlist"></td></tr></table></div>

</body></html>

以上です。左側をクリックしても右側は空白のままです。
ためしに右側にJavaScriptの内容を貼り付けてみたところ、正常にコンテンツ一覧が表示されました。

どのようにしたらよいか、どうぞご教授ください。
最後に編集したユーザー luis on 2007年1月08日(月) 19:05 [ 編集 1 回目 ]

luis
アクティブユーザー
記事: 20
登録日時: 2007年1月08日(月) 17:35

利用環境

投稿記事 by luis » 2007年1月08日(月) 18:59

環境を書き忘れておりました。

Apache 1.3.37
PHP 4.4.4
XREA.COM ( http://www.xrea.com/ ) の無広告プランを利用させていただいています。

どうぞよろしくお願いします。

luis
アクティブユーザー
記事: 20
登録日時: 2007年1月08日(月) 17:35

よろしくお願いします

投稿記事 by luis » 2007年1月16日(火) 07:49

試行錯誤していますが、状況は変わっておりません。
ヒントだけでもいただけませんでしょうか。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: よろしくお願いします

投稿記事 by webmaster » 2007年1月18日(木) 14:03

luisさん、ご質問ありがとうございます。
なかなか時間が取れず、すぐに解決するものを優先的に回答させて
頂いております。お待たせしており大変申し訳ありません。

今から少しご質問内容について調査してみます。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: よろしくお願いします

投稿記事 by webmaster » 2007年1月18日(木) 14:31

引用していただいたサンプルHTMLを拝見致しましたが、内容に特に問題はなさそうです。

ひょっとすると、cmsd:xxxxで読み込まれる部分HTMLの最後に改行が入っており、

コード: 全て選択

var listA = '<div>テスト</div>
';
のようになってしまっている可能性があります。文字列は'〜'で囲まれている必要があり、中に改行が入っているとエラーになる為、こうなっていると正しく実行されません。

一度その辺をご確認頂ければ幸いです。

尚、JavaScriptソース中に直接CMSDの出力を埋め込む方法ではなく、次のような方法を取る事も可能かと思います。

考え方としては、CMSDの出力を display:none; で非表示にしてHTML中に置いておき、
JavaScriptからそのHTMLを取得して必要な場所にコピーする、というものです。
JavaScriptソースとデータが分離されるので、メンテナンスもしやすいと思います。
<html xmlns="http://www.w3.org/1999/xhtml"><head>

<script type="text/javascript">
<!--
function setList(myListID) {

var myList = document.getElementById( myListID );
if ( myList != null )
{
catlist.innerHTML=myList.innerHTML;
}
}
//-->
</script>

</head><body>

<div id="left"><table><tr><td><a onclick="setList('listA');">サブカテゴリA</a></td></tr>
<tr><td><a onclick="setList('listB');">サブカテゴリB</a></td></tr></table></div>

<div id="right"><table><tr><td id="catlist"></td></tr></table></div>

<div style="display:none;">
<div id="listA"><cmsd:entrylist name="content" design="default" rows="12" pageno="top"><cmsd:group key="catnum" value="0" /></cmsd:entrylist></div>
<div id="listB"><cmsd:entrylist name="content" design="default" rows="12" pageno="top"><cmsd:group key="catnum" value="1" /></cmsd:entrylist></div>
</div>

</body></html>

luis
アクティブユーザー
記事: 20
登録日時: 2007年1月08日(月) 17:35

ありがとうございます

投稿記事 by luis » 2007年1月18日(木) 20:57

返信いただき、ありがとうございます。

改行は入っておりません。
関係あるかと思い、デザインファイルの改行を消してみましたが、変わりませんでした。

示していただいた下の方法を試してみます。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: ありがとうございます

投稿記事 by webmaster » 2007年1月19日(金) 13:39

luisさん、いろいろとお手数をおかけしております。

改行入っていませんでしたか…。
一度該当ページの出力結果を見てみたいところですが、難しいですよね。
考え方としてはまったく問題ないと思うのですが…。

また進展がありましたらご連絡頂ければ幸いです。

luis
アクティブユーザー
記事: 20
登録日時: 2007年1月08日(月) 17:35

いちおう解決

投稿記事 by luis » 2007年8月15日(水) 13:12

古い記事を掘り起こさせていただきました。長いこと放置して申し訳ありません。

返信いただいた方法でもうまくいきませんでした。

JavaScriptでCMS Designerのリストを切り替える方法は使わないことにいたしました。
質問を投稿した頃とはJavaScriptについての考え方が変わりました。
身のまわりに意外なほどJavaScriptを遮断している方が多いので、コンテンツに直結した部分に使用するのはどうかな・・と思いはじめたのです。

うまくいかない理由がわからないままなのは気になりますが、いちおうの解決とさせてください。

今後ともどうぞよろしくお願いいたします。

返信