关于Struts2: 在 s:iterator中 动态插入内容 的问题 本帖最后由 shuqin1984 于 2010-09-15 15:51:32 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当点击回复该留言的时候,得到触发这个事件的对象,然后获得该对象的坐标,你通过计算后,就可以把那个Form定位到触发这个事件的对象之下呀。 问题是,采用什么定位呢? 因为留言内容下面原来是空的, 当点击链接时, 将“凭空”出现一个form 表单, 这个表单有可能覆盖掉下面的留言内容。采用怎样的定位,才能使表单定位到相应的位置上,同时,使后面的留言自动地向下挪移呢?绝对定位基本是不可能的; 相对定位的话,我先试试,不知道能不能使后面的留言因为表单的出现而自动向下移动。 还有一种思路就是, 不使用定位技术, 而是使每个迭代元素都有一个<div id="replyarea[i]", class="replyarea">;每个 <div>元素 与 每个被迭代的元素msg 绑定起来。这样,点击每个msg时,可以在对应的迭代元素相应的<div></div> 自动插入 form 表单。 不过这种思想,如何根据迭代的元素标记实现 <div id="replyarea[i]"> 呢?<div id="replyarea"+"${msg.id}"></div> ? 然后在 js 中 var replyarea = document.getElementById("replyarea" + msgId); 这里 msgId = ${msg.id} 可以通过参数传进来?感觉 CSS 定位还是比较简单, 只要一个 div 元素, 关键是, 如何将 div 定位到相应留言内容的下面,而使后面的留言自动下移(以免生成的form表单覆盖了后面的内容,就不好看了)? 问题解决了。虽然有点笨拙, 呵呵页面中, <div id="replyarea${msg.id}"></div> 仍然放入 <s:iterator> 里面, 就如上面一样,不过 id 号后面增加了 ${msg.id} 使得每个 div 跟每条留言绑定;然后在 js 中: function toReply(msgId){ var str=""; str += "<form action='saveReply.action?msgId="+ msgId + "'" + " method='post'>"; str += "<textarea name='reply.content' id='replytext' col='45' row='10'></textarea>"; str += "<input type='button' value='取消'> onclick='return cancel(msgId);'> "; str += "<input type='submit' value='提交' onclick='return validateReply();'>" str += "</form>"; var areapos = "replyarea"+msgId; var replyarea = document.getElementById(areapos); var replytext = document.getElementById("replytext"); replyarea.innerHTML = str; return false; }return cancel(msgId); 写法有点问题, 不过,大问题已经解决。这个我再纠正一下啊。 怎么实现点击按钮时,向后台请求List数据,返回后显示在两个iframe里面 急!那位大哥用过jmagick进行图片的锐化的! javaScript里的 求助一个关于异步短连接单工通讯的问题 层div怎么隐藏。怎么让它在显示 如何判断用户离开了当前的页面或Session超时? jsp 求救 大学好,要学JSP,有什么精典的书推荐吗 请教一个关于form的action和submit的问题? SSM框架实现论坛功能后台开发 jfreeChart中如何使纵坐标的起点位置0与横坐标的起点位置0在同一地方 extjs 同一行显示几个文本框
绝对定位基本是不可能的; 相对定位的话,我先试试,不知道能不能使后面的留言因为表单的出现而自动向下移动。
{
var str="";
str += "<form action='saveReply.action?msgId="+ msgId + "'" + " method='post'>";
str += "<textarea name='reply.content' id='replytext' col='45' row='10'></textarea>";
str += "<input type='button' value='取消'> onclick='return cancel(msgId);'> ";
str += "<input type='submit' value='提交' onclick='return validateReply();'>"
str += "</form>";
var areapos = "replyarea"+msgId;
var replyarea = document.getElementById(areapos);
var replytext = document.getElementById("replytext");
replyarea.innerHTML = str;
return false;
}return cancel(msgId); 写法有点问题, 不过,大问题已经解决。这个我再纠正一下啊。