1

ボタンをクリックしたときにアコーディオンの内容を取得するためのコードを書いています。アコーディオンの内部コンテンツは、ajax 呼び出しを使用してサーバーから受信されています。これらのコンテンツは、ダイアログ ボックス内に表示されます。

ここでの問題は、コンテンツ (元はアコーディオン コンテンツであると想定されていた) がダイアログ ボックスで単純な html として表示され、アコーディオン (ボタン付き) として表示されないことです。HTMLファイルで同じコンテンツを使用するだけで(サーバーから受信したコンテンツを「」内に貼り付けると、正常に動作し、ダイアログボックスにアコーディオンが表示されます。

何がうまくいかないのですか?アコーディオンの内容を事前に伝える必要があることと関係がありますか。誰でもこれを修正する方法を提案できますか。(アコーディオンの内容は、サーバーから受信されるたびに変更されます)

JavaScript関数は次のとおりです。

<script>
     $(document).ready(function() {
    $("#accordion").accordion({
    autoHeight: false
});
     </script>


<script language="javascript"> 

    function Faulttest() 
    {

    var xmlhttp;
    if (window.XMLHttpRequest)
    {xmlhttp=new XMLHttpRequest();}
    else
    {xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
    xmlhttp.onreadystatechange=function()
    {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    Here we get the contents which should be inside the accordion which we receive from the server



> **document.getElementById("accordion").innerHTML=xmlhttp.responseText;**



    }
    }
    xmlhttp.open("GET","http://****/Anomalies/index.jsp",true);
    xmlhttp.send();
}

ページの HTML コンテンツは次のとおりです。

<body style="font-size:62.5%;"  >
        <div id="page">         
        <div id="header"><h1>header</h1></div>          
        <div id="body" >
            <h1>content top </h1>                       
        <div id="dia">
        <div id="dialog" title="Detailed FeedBack"><div id="accordion">

        // CODE SHOULD GO HERE


        </div>
            </div>
                </div>
   <button type="button" onclick="Faulttest();">Click Me!</button>  
  </body>
4

2 に答える 2

2

#accordionアコーディオン スクリプトがどのように機能するかを正確に知らなくても、スクリプトが初期化時のコンテンツ内のコンテンツをスクリプトが処理する必要があるコンテンツであると想定しているためだと思います。

実装で可能であれば、 (またはアコーディオン スクリプトが子ノードに指定するものは何でも)div内に空の s を配置し、代わりにそれらを動的に設定します。#accordion

#accordionそれ以外の場合は、AJAX 呼び出しが返されるまで、ノードでアコーディオンを初期化するのを待ちます。

于 2012-07-25T17:11:13.650 に答える
0

実際には、アコーディオンを破棄して再作成する必要があるだけです。これは次のように実行できます。

$('#accordion').append(xmlhttp.responseText).accordion('destroy').accordion();
于 2012-07-25T20:13:21.170 に答える