我想动态地将新闻更新添加到页面。 当你登录时,你会得到20条新闻。向下滚动到底部,并有一个“更多”按钮。点击它,一些Ajax从服务器获取json格式的20多个。 Javascript将json解析成名称,日期,评论,图片等。使用javascript动态地将元素添加到页面时,CSS不起作用
好消息是它有点作品。我可以为每个名称日期评论等创建文本节点,并将它们添加到一个id =“more”div中,并且它全部出现在blurb中。
我该如何将它变成与周围divs相同的格式? 我会让这个尽量简短......
三栏布局,内部的三个栏布局...
<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,部分工作如上。 我试图在js中创建一个复杂的嵌套div结构。这让我的存在方式的一部分,但不能做到这一点的方式...... 这是一个有点乱,不好意思......
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}位于同一位置?
我建议至少你可能想看看使用JQuery进行DOM操作,它使事情变得更好。如果你打算做很多这种类型的代码,你也可以看看胡须来创建html格式模板(对于生产版本你可以将它们构建到JS文件中)。 – Robert 2012-08-01 14:53:34
每个人似乎都喜欢JQuery。我很喜欢这个节目。 – grooble 2012-08-01 15:10:22