サイトを検索したところ、私が抱えている問題は、innerHTMLを使用してデータを入力することに関連している可能性があると思いますが<div>
、特定の問題にマッピングできる解決策を見つけることができません。誰かが助けてくれることを願っています。基本的に、テキストフィールドのあるフォームを含むHTMLページがあります。<div>
このページには、すぐに目次が表示される空のページも含まれています。は次の<div>
ように定義されます。
<div id="toc_menu" class="menu_list">
フォームテキストフィールドのonkeyup属性を設定して<head>
、XMLHttpRequestを定義し、テキスト入力フィールド(str)に入力された値をを使用してPHPページに送信するJavascript関数(HTMLで定義)を実行しますxmlhttp.open("GET","toc_items.php?filter="+str,true)
。PHPページは'filter'の値を取得し、MySQLクエリを実行します。次に、以下を使用して主見出しと小見出しを持つ目次として空にエコーバックされるいくつかの結果を生成します。
document.getElementById("toc_menu").innerHTML=xmlhttp.responseText;
これは、多かれ少なかれ期待どおりに機能します。返される目次の長さは、テキストがテキストフィールドに入力されると変化します。ただし、問題があります。この目次は、HTMLで定義されたスクリプトを使用して作成されたアコーディオン効果を持つことになっています<head>
。このスクリプトはRoshanBhattaraiによって開発され、目次リストがHTMLページにハードコードされている場合に美しく機能します。スクリプトは次のとおりです。
<script type="text/javascript">
<!--
//---------------------------------+
// Developed by Roshan Bhattarai
// Visit http://roshanbh.com.np for this script and more.
// This notice MUST stay intact for legal use
// --------------------------------->
$(document).ready(function()
{
//slides the element with class "menu_body" when paragraph with class "menu_head" is clicked
$("#toc_menu p.menu_head").click(function()
{
$(this).css({backgroundImage:"url(down.png)"}).next("div.menu_body").slideToggle(300).siblings("div.menu_body").slideUp("slow");
$(this).siblings().css({backgroundImage:"url(left.png)"});
});
});
</script>
次のようにフォーマットされた目次アイテム:
<p class="menu_head">HEADING</p>;
<div class="menu_body">;
<a href="link-to-relevant-page" target="body_frame">SubHeading</a>';
</div>;
に挿入された目次アイテムは<div>
、HTMLページのJavascriptをトリガーしないようです<head>
(ただし、テキストはで定義されているCSSファイルを使用して正しくフォーマットされています<head>
)。PHPページから出力を手動でコピーしてに貼り付ける<div>
と、アコーディオン効果が完全に機能します。
任意の提案をいただければ幸いです。