为什么我使用jquery动态的插入表格行出错,请帮忙

leero 2009-04-02
如题,firefox下能加载进来,但是格式不正确,ie下能取到数据,但是没有显示出来,代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>message</title>
    <script src="jquery.js" type="text/javascript"></script>
	<style>
.cPointer
{
	cursor:pointer;
	cursor:hand;
	background-color:#afa;
}
.button {
  width: 100px;
  text-align: center;
  padding: 10px;
  background-color: #fff;
  border-top: 3px solid #888;
  border-left: 3px solid #888;
  border-bottom: 3px solid #444;
  border-right: 3px solid #444;
}
.highlighted {
  background-color: #dfd;
  font-style: italic;
}
.hidden
{
	display:none;
}
#objload{
	border: 1px solid #CC3300;
	background-color: #CC3300;
	line-height:18px;
	position: absolute;
	height:20px;
	left:10px;
	top: 10px;
	color:#c0c0c0;
	text-align:center;
	font-size:11.5px;
	padding:4px;
	margin:0 auto;  
	width:130px;
}	
		
.unnamed1 {  font-size: 9pt}
.close1:link{TEXT-DECORATION: none} 
.close1:visited {TEXT-DECORATION: none} 
.close1:hover {TEXT-DECORATION: none} 										
	</style>
    <script>																															

var scrolltop=function(){
        return document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
        };
var scrollleft=function(){
        return document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft;
        };
		function o (){
			_div1 = document.getElementById("objload");
			initoffsetTop = (_div1.initoffsetTop)?_div1.initoffsetTop:_div1.offsetTop;
			_div1.initoffsetTop = initoffsetTop;
			_div1.style.top=  scrolltop()+initoffsetTop+"px";
		}
		$(document).ready(function(){	
			$("#loadData").click(function()
			{
				$("#objload").removeClass("hidden");
				o();
				$("#messageTable").slideUp("slow",function()
				{
					var $r = new Date();
					$r = $r.getTime();
					$.get("messagedata.xml?v="+$r,function(data)
					{
						$(data).find("entry").each(function()
						{
							var entry = $(this);
							var $html= '<TR>';							
							$html += '<TD align=middle width=30 bgColor=#fffff4 height=17>';
							$html += '<TR><TD align=middle width=30 bgColor=#fffff4 height=17><P align=center><INPUT id=CHECKBOX type=checkbox value="'+entry.find('id').text()+'" name=messageIds></P></TD>';
							$html += '<TD align=middle width=80 bgColor=#fffff4 height=17><A href="/browse/ListWriter.asp?vwriter=username&amp;idwriter=336604&amp;key=509664532" target=_blank>'+entry.find('fw').text()+'</A></TD>';
							$html += '<TD align=middle width=80 bgColor=#fffff4 height=17><A href="/browse/ListWriter.asp?vwriter=用户服务&amp;idwriter=336604&amp;key=509664532" target=_blank>'+entry.find('tw').text()+'</A></TD>';
							$html += '<TD bgColor=#fffff4 height=17>'+entry.find('msg').text()+'</TD>';
							$html += '<TD align=middle width=110 bgColor=#fffff4 height=17>'+entry.find('dtime').text()+'</TD>';
							$html += '<TD align=middle width=40 bgColor=#fffff4 height=17><A href="Messages_collect.asp?id=68233195&amp;CollectFlag=0&amp;idwriter=336604&amp;key=509664532"><FONT color=red size=2>收藏</FONT></A></TD>';
							$html += '</TR>\n';
							$("#messageTable > tbody").append($html);							

						});
						$("#messageTable").slideDown("slow",function(){$("#objload").addClass("hidden");});	
					});										
				});

			});				
		});
    </script>
  </head>
  <body>

<table width="100%" border="0" cellspacing="0" cellpadding="2" align="center" bgcolor="#FFFFFF">
<tr>
  <td>
    <div align="center"><input type="button" id="loadData" value="加载数据"></div>
  </td>
</tr>
</table>      

<FORM name=msgfrm method=post>
<table border=0 width=100% cellspacing=1 cellpadding=3 height=73 align=center class=unnamed1 bgcolor=#6699cc id="messageTable">
<Thead>
<TD align=middle width=30 bgColor=#eeefff height=17>操作</TD>
<TD align=middle width=80 bgColor=#eeefff height=17>发送者</TD>
<TD align=middle width=80 bgColor=#eeefff height=17>接收者</TD>
<TD align=middle bgColor=#eeefff height=17>消息内容 </TD>
<TD align=middle width=110 bgColor=#eeefff height=17>发送日期</TD>
<TD align=middle width=40 bgColor=#eeefff height=17>收藏夹</TD></Thead>	
<TBODY id="messageBody">	
</TBODY>
</table>
</form>	
		
      <div id="objload" class="hidden">
		数据正在加载中...     
      </div>	  
      <div id="dictionary">
      </div>
	       
  </body>
</html> 




xml文件messagedata.xml内容如下
<?xml version="1.0" encoding="UTF-8" ?>

<entries>
		<entry>
			<id><![CDATA[10896120]]></id>
			<dtime><![CDATA[2006-12-31 11:40:00]]></dtime>
			<itw><![CDATA[336604]]></itw>
			<tw><![CDATA[username]]></tw>
			<ifw><![CDATA[3774133]]></ifw>
			<fw><![CDATA[7y7y7y7y]]></fw>
			<tcf><![CDATA[0]]></tcf>
			<fcf><![CDATA[0]]></fcf>
			<msg><![CDATA[<img src=http://advertisement.tianya.cn/store/newyearlin.jpg border=0><font color=red><b>新年贺卡:</b>新年快乐,万事如意,</font>``。<font color=red>(数量 1,加168分)</font>]]></msg>
		</entry>
		<entry>
			<id><![CDATA[10285816]]></id>
			<dtime><![CDATA[2006-11-30 21:00:00]]></dtime>
			<itw><![CDATA[336604]]></itw>
			<tw><![CDATA[username]]></tw>
			<ifw><![CDATA[898464]]></ifw>
			<fw><![CDATA[物不平则鸣]]></fw>
			<tcf><![CDATA[0]]></tcf>
			<fcf><![CDATA[0]]></fcf>
			<msg><![CDATA[:)]]></msg>
		</entry>
		<entry>
			<id><![CDATA[10284959]]></id>
			<dtime><![CDATA[2006-11-30 20:07:00]]></dtime>
			<itw><![CDATA[2106905]]></itw>
			<tw><![CDATA[zc7238]]></tw>
			<ifw><![CDATA[336604]]></ifw>
			<fw><![CDATA[username]]></fw>
			<tcf><![CDATA[0]]></tcf>
			<fcf><![CDATA[0]]></fcf>
			<msg><![CDATA[兄弟还抽过吉庆?吉庆我抽过的多了去了,那时候高中的时候偷抽的]]></msg>
		</entry>
</entries>

leero 2009-04-02
请大家出手帮忙下,先行谢过了,
bluky999 2009-04-10
不要贴这么多的代码啊。。。 看着都眼晕,还放不下

1 动态插入是可以简单地实现的; 建议你先写个小的简单点的程序测试一下,成功后再测试你自己的程序;

2 我做的动态插入,是先读取已有的行,然后在后面加上新插入的行,最后更新到容器中。 不过这个只是个人习惯问题吧

leero 2009-04-13
已知道问题出在哪了,不能在table里面直接append行,【$("#messageTable > tbody").append($html);】,需要使用标准的dom来操作,
icss310 2011-11-09
JEBAIKEjava2012 2012-06-26
楼主你好,动态表格的操作,我一般都是使用html dom对象进行操作的。使用Table的addRow()方法添加行,TableRow的addCell()方法添加单元格。
xiaofengyu 2012-07-09
楼主你好,jquery里头 变量命名  var $html= '<TR>';  这个不太好吧,$ 符号在jquery里头是关键字呢。你的代码太多太复杂了,我贴一个我做过的自动添加一行tr的代码给你参考一下。
function addnew(obj) { 
	var length = $("#datatab tbody").children("tr").length;
	var newtr = "<tr>";
	newtr += '<td><input name=\"code\" type=\"text\" width=\"120\"> </td>';
	newtr += '<td><input id=\"begin'+length+'\" name=\"begin\" type=\"text\" width=\"100\" onfocus=\"showdate('+0+')\"> </td>';
	newtr += '<td><input name=\"end\" type=\"text\" width=\"100\" onfocus=\"showdate('+length+')\"> </td>';
	newtr += '<td><textarea name=\"subject\" rows=\"1\" cols=\"30\"></textarea></td>';
	newtr += '<td><input name=\"no\" type=\"text\" width=\"50\" onfocus=\"addnew(this)\"></td>';
	newtr += '<td><a href=\"#\" onclick=\"delitem(this)\" style=\"text-decoration: none;color: gray;font-size: 12px;display: none;\">删除</a> </td>';
	newtr += '</tr>';
	$("#datatab").append(newtr);//datatab 是table的id
	$(obj).removeAttr("onfocus");//删除本行的触发事件
	$("#datatab tbody").children("tr").eq(length - 1).children("td").eq(5).children("a").show();//显示本行的删除链接
}

我这段代码是在本行倒数第二个td获得焦点添加一个新的tr并显示当前所在行的删除链接,事件只允许触发一次,调用的时候是这样的addnew(this)。希望对你有帮助
bluishoul 2012-08-08
解析entry.find('id').text()时有问题哦...
Global site tag (gtag.js) - Google Analytics