ニュースの更新をページに動的に追加したいと考えています。ログインすると、20 のニュース記事が表示されます。一番下までスクロールすると、「もっと見る」ボタンがあります。それをクリックすると、一部の ajax がサーバーから json 形式でさらに 20 個を取得します。Javascript は json を名前、日付、コメント、写真などに解析します。
良いニュースは、それがうまく機能することです。各名前、日付、コメントなどのテキスト ノードを作成し、それらを id="more" div に追加すると、すべてが宣伝文句に表示されます。
周囲の div と同じ形式にするにはどうすればよいですか? これをできるだけ簡潔にします...
3 列のレイアウト、3 列のレイアウトの内側...
<div class="wrapper threecol">
<div class="colmid">
<div class="colleft">
<div class="col1">
<div class="friends">
<div class="colwrap st-leftmenu">
<c:forEach var="st" items="${news}">
<div class="st-colleft">
<div class="st-col1">
<div class="statusName">
${st.name}
</div>
<%-- date, comment, pic etc. omitted --%>
</div> <%-- end st-col2 --%>
</div> <%-- end div class st-colleft --%>
</c:forEach>
</div> <%-- end div class colwrap st leftmenu --%>
<%-- add new stuff here dynamically --%>
<div id="showExtra"></div>
<a href="javascript:void(0)" onclick="moreStatus()">get more</a>
</div> <%-- end div class friends --%>
</div> <%-- end col1 --%>
上記のように部分的に機能する id="showExtra" div に追加しようとしています。複雑な入れ子のdiv構造をjsで作ってみました。それは私をそこへの道のりの一部にしましたが、それはそれを行う方法ではありません...それは少し混乱しています、申し訳ありません...
function showMoreStatus(){
var moreDiv = document.getElementById('showExtra');
var moreJSON = new Array();
if(request.readyState == 4) {
if (request.status == 200) {
moreJSON = eval('(' + request.responseText + ')');
for(var i=0; i<moreJSON.length; i++) {
//get values from JSON
var JSONName = moreJSON[i][2];
// and others...
//create text nodes, a href and img
var nameTextNode = document.createTextNode(JSONName);
// and other nodes, imgs, hrefs etc...
// surely this is NOT the way to do it!
//column divs
var outColDiv = document.createElement("div");
outColDiv.setAttribute("class", "col1");
var friendsDiv = document.createElement("div");
friendsDiv.setAttribute("class", "friends");
var colLeftDiv = document.createElement("div");
colLeftDiv.setAttribute("class", "st-colleft");
var col1Div = document.createElement("div");
col1Div.setAttribute("class", "st-col1");
var col2Div = document.createElement("div");
col2Div.setAttribute("class", "st-col2");
colLeftDiv.appendChild(col1Div);
colLeftDiv.appendChild(col2Div);
friendsDiv.appendChild(colLeftDiv);
outColDiv.appendChild(friendsDiv);
var nameDiv = document.createElement("div");
nameDiv.setAttribute("class", "statusName");
// and others...
// append nodes to divs
nameDiv.appendChild(nameTextNode);
col1Div.appendChild(nameDiv);
col1Div.appendChild(dateDiv);
col1Div.appendChild(contentDiv);
// append the page
moreDiv.appendChild(outColDiv);
}
}
}
}
ガッ!ここまで読んでくれてありがとう。
まあ、それは本当に簡単ではありませんでした。実際、それはおそらく不要です。
ここで正しいアプローチは何ですか?nameTextNode と彼のすべての友人を ${st.name} と同じ場所に座らせるにはどうすればよいですか?