当前位置: 代码迷 >> JavaScript >> Js 动态添加table时 样式无法显示 求解~解决方案
  详细解决方案

Js 动态添加table时 样式无法显示 求解~解决方案

热度:122   发布时间:2012-04-04 16:38:51.0
Js 动态添加table时 样式无法显示 求解~~~~~
我想创建一个这样的一个<td> 

<td width="25%" height="70" align="center">
  <table width="183" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td align="right" valign="top" class="button_back">
  <table width="131" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td height="13"></td>
  </tr>
  <tr>
  <td class="button_font"><a href="#" class="a2" onClick="javascript:window.parent.addTab('<%=shortCutList.get(index).get("URL")%>','<%=shortCutList.get(index).get("NAME")%>');"><%=shortCutList.get(index).get("NAME")%></a></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
</td>

具体创建过程是这样的:
function createTd(url,name){
var topTd = document.createElement("td");
topTd.setAttribute('width','25%');
topTd.setAttribute('height','70');
topTd.setAttribute('align','center');

var table = document.createElement("table");
table.setAttribute('width','183');
table.setAttribute('border','0');
table.setAttribute('cellspacing','0');
table.setAttribute('cellpadding','0');

var tr = document.createElement("tr");

var td = document.createElement("td");
td.setAttribute('align','right');
td.setAttribute('valign','top');
td.setAttribute('class','button_back');

var innerTable = document.createElement("table");
innerTable.setAttribute('width','131');
innerTable.setAttribute('border','0');
innerTable.setAttribute('cellspacing','0');
innerTable.setAttribute('cellpadding','0');

var innerTableTr1 = document.createElement("tr");

var innerTableTd1 = document.createElement("td");
innerTableTd1.setAttribute('height','13');

var innerTableTr2 = document.createElement("tr");

var innerTableTd2 = document.createElement("td");
innerTableTd2.setAttribute('class','button_font');

var tdHref = document.createElement("a");
tdHref.setAttribute('href','#');
tdHref.setAttribute('class','a2');
tdHref.setAttribute('onClick',"javascript:window.parent.addTab('" + url + "','" + name + "');");
tdHref.innerHTML = name;

innerTableTd2.appendChild(tdHref);
innerTableTr2.appendChild(innerTableTd2);

innerTableTr1.appendChild(innerTableTd1);

innerTable.appendChild(innerTableTr1);
innerTable.appendChild(innerTableTr2);

td.appendChild(innerTable);

tr.appendChild(td);

table.appendChild(tr);

topTd.appendChild(table);

return topTd;
}
但是穿件之后 添加到table中 无法显示样式 连接点了也没有效果 求高手

------解决方案--------------------
你是说,添加新的单元格后,破坏了原来表格的样式?

如果是这样,我的理解应该是 topTd 的width="25%"的原因
HTML code

<html>
<head>
<style>#at td{background:black;}</style>
</head>
<body>
<script type="text/javascript">
function createTd(url,name){

///////////////////////////////

 var innerTableTd1 = document.createElement("td");
 innerTableTd1.setAttribute('height','13');

 var innerTableTr1 = document.createElement("tr");

 innerTableTr1.appendChild(innerTableTd1);

 var tdHref = document.createElement("a");
 tdHref.setAttribute('href','#');
 tdHref.setAttribute('class','a2');
 tdHref.setAttribute('onClick',"javascript:window.parent.addTab('" + url + "','" + name + "');");
 tdHref.innerHTML = name;

 var innerTableTd2 = document.createElement("td");
 innerTableTd2.setAttribute('class','button_font');

 var innerTableTr2 = document.createElement("tr");

 innerTableTd2.appendChild(tdHref);
 innerTableTr2.appendChild(innerTableTd2);

 var tbody = document.createElement("tbody");

 tbody.appendChild(innerTableTr1);
 tbody.appendChild(innerTableTr2);

 var innerTable = document.createElement("table");
 innerTable.setAttribute('width','131');
 innerTable.setAttribute('border','0');
 innerTable.setAttribute('cellspacing','0');
 innerTable.setAttribute('cellpadding','0');

 innerTable.appendChild(tbody);

////////////////////////////////////

 var td = document.createElement("td");
 td.setAttribute('align','right');
 td.setAttribute('valign','top');
 td.setAttribute('class','button_back');

 td.appendChild(innerTable);

 var tr = document.createElement("tr");

 tr.appendChild(td);

 var tbody1 = document.createElement("tbody");

 tbody1.appendChild(tr)

 var table = document.createElement("table");
 table.setAttribute('width','183');
 table.setAttribute('border','0');
 table.setAttribute('cellspacing','0');
 table.setAttribute('cellpadding','0');

 table.appendChild(tbody1);

 var topTd = document.createElement("td");
 //topTd.setAttribute('width','25%');
 topTd.setAttribute('height','70');
 topTd.setAttribute('align','center');

 topTd.appendChild(table);

 return topTd;
 }
</script>
<table id="start" border="1">
    <tr onclick="alert(this.cells.length);">
        <td width="30px" height="30px"></td>
        <td width="30px" ></td>
        <td width="30px" ></td>
        <td width="30px" ></td>
    </tr>
    <tr onclick="alert(this.cells.length);">
        <td width="30px" height="30px"></td>
        <td width="30px" ></td>
        <td width="30px" ></td>
        <td width="30px" ></td>
    </tr>
</table>
<script type="text/javascript">
var   table   =   document.getElementById( 'start');//获取table 
var   tableRows   =   table.rows;//获取table有多少行
var   lastRow   =   table.rows[tableRows.length-1];//获取最后一行
var   cellsLength   =   lastRow.cells.length; //获取最后一行有几列元素
//var   tableBody   =   table.firstChild;//获取tbody 
var   tableBody=table.getElementsByTagName("tbody")[0];//兼容FF方式~
//var   lastchild   =   tableBody.lastChild;//获取tbody的最后一个 </tr> 
var   lastchild=lastRow;//兼容FF方式~

var url="我是一个可耻的地址",name="我是一个可耻的名字";
if(cellsLength   !=   4){
 var   td   =   createTd(url,name); 
 lastchild.appendChild(td); 
}else{ 
 var   td   =   createTd(url,name); 
 var   tr   =   document.createElement( 'tr'); 
 tr.appendChild(td); 
 tableBody.appendChild(tr); 
}
</script>
</body>
</html>
 
  相关解决方案