3

データを保持する複数のテーブルを作成する必要があります。すべてのテーブルは同じフィールドで構成されますが、各テーブルのデータはjQueryとJavascriptを使用してXMLファイルから解析されます。現在の私の設定は、XMLデータが配置される領域を識別する「id」フィールドを使用してHTMLでフォーマットされたテーブルを作成することです。例えば...

メインHTML:

<body id="top">
</body>

テンプレートHTML:

<table id="sectionTable" border="1" cellpadding="10" cellspacing="1" width="100%">
    <tr><td id="information"></td></tr>
</table>

テンプレートをロードするJavascript:

$('#top').load('template.html #sectionTable');

これにより、HTMLファイル(この場合はtemplate.html)のID'sectionTable'の要素が取得され、HTMLページの本体であるID'top'の要素の本文に挿入されます。

XMLデータをテーブルに配置するためのJavascript:XMLデータを 適切に解析して保存し、それを変数に保存することができます。次に、このデータを適切なhtmlIDタグに追加します...

var title = <from XML>; //Lets say in this case title="My Stack Title"

...

$(#information).append(title);

結果のHTML:

<table id="sectionTable" border="1" cellpadding="10" cellspacing="1" width="100%">
    <tr>
       <td id="information">My Stack Title</td>
    </tr>
</table>

このアプローチの問題は、XMLの複数のセクションをループしてこの手法を使用すると、新しいHTMLテーブルが作成されず、同じIDを使用しているため、既存のデータが上書きされることです。

DOMオブジェクトを使用することでこの問題を回避できることはわかっていますが、私の問題は、これは単純な例ですが、テーブルが複数のレベルやスタイルなどで非常に複雑になることです。これは、作成してネストするオブジェクトがたくさんあります。他のユーザーが将来変更するのは非常に難しいでしょう(これは非常に可能性が高いです)。テンプレートメソッドを使用すると、すべてがどこに行くのかを追跡するのは非常に簡単です。XMLデータの反復のインデックスに基づいてHTMLに一意のIDを配置する方法があれば、問題は解決しますが、これを実現する方法がわかりません。

助言がありますか?ありがとう!

4

2 に答える 2

2

代わりに、id = "information"をクラスに変更してから、クラス"information"の各要素を繰り返し処理してみてください。

$('.information').each(function(n,c){
 $(this).append(title);
})

IDを使用すると、そのIDの最初の要素のみが照会されます。これはテストしていませんが、試してみてください。

于 2012-06-12T20:18:19.010 に答える
1

ドキュメント内に同じIDを持つ2つの要素を含めることはできません。HTML仕様では、1つしか存在できないとされています。LCIIIが提案したように、代わりにクラスを使用してください。jQueryの.first()および.last()関数を使用して、特定のクラス名を持つ最初と最後の要素を取得できます。

$('.information').last().append(title);

その種の他のテーブルの後に新しいテーブルを追加したい場合は、次のように行うことができます。

$('.information').first().clone().insertAfter($('.information').last()).append(title);

(英語:最初の情報テーブルのクローンを作成し、最後の情報テーブルの後に挿入し、タイトルを追加します。確かに、テーブルを指定していませんが、すべての.informationがテーブルの場合...)

の代わりに.append(title)、新しいテーブルのデータを上書きするために必要なことは何でもできます。

于 2012-06-13T01:08:39.807 に答える