2012-08-05 51 views
0

我正在javascript中动态创建表格。另外我起诉一些CSS代码来格式化表格。但是,我的代码没有选择任何格式。甚至没有像表格中添加边框那样最简单的方法。这里是我的代码:在Javascript中添加表格样式

function parseRequest_ls(response) { 
    document.getElementById("files").innerHTML += "<table border='2'>"; 

    for(var i=0;i<5;i++){ 
     if(response.data[i].type == "folder" || response.data[i].type == "album") { 
      document.getElementById("files").innerHTML += "<tr><td><b>+</b> <a href='#'>"+ response.data[i].name + "</a></td></tr>"; 
     } 
    } 
    document.getElementById("files").innerHTML += "</ul></table></div>"; 
} 

CSS代码:

table, th, td { 
    border: 2px solid; 
    border-collapse: collapse; 
    font-family: "Trebuchet MS", Arial, sans-serif; 
    color: #555; 
} 

caption { 
    font-size: 150%; 
    font-weight: bold; 
    margin: 5px; 
} 

td, th { 
    padding: 4px; 
} 
+3

这可能是因为你的html无效。你不能直接在表格元素中放置一个ul。它必须在td中。更重要的是ul来自哪里,你不会在这段脚本中创建起始标签。你也不打开你正在关闭的div标签。 – JConstantine 2012-08-05 19:00:38

+0

即使现在也不能工作..... – CodeMonkey 2012-08-05 19:05:05

+1

你可以使用jQuery,并使这更简单吗? – jrubins 2012-08-05 19:10:39

回答

2

在你的函数你有

document.getElementById("files").innerHTML += "<table border='2'>"; // first line 

document.getElementById("files").innerHTML += "</ul></table></div>"; // last line 

你已经把关闭UL标签</ul>并关闭div标签</div>在最后一行,但没有使用任何uldiv任何起动tag所以HTML坏了,我想你不应该使用table内的ul没有包装它td内。所以在这种情况下,您可以使用

function parseRequest_ls(response) { 
    var trs='';  
    for(var i=0;i<5;i++){ 
     if(response.data[i].type == "folder" || response.data[i].type == "album") { 
      trs +="<tr><td><b>+</b> <a href='#'>"+ response.data[i].name + "</a></td></tr>"; 
     } 
    } 
    document.getElementById("files").innerHTML += "<table border='2'>"+trs+"</table>"; 
} 

A simple example

1

请勿使用+=innerHTML。首先在一个临时变量中构建一个字符串,然后在字符串中有一些完整(有效的)HTML后,可以使用+=将它附加到一个元素上。

-1

所以问题是,我不能通过innerHTML创建表。我必须使用DOM对象来完成它。我创建了一个DOM对象,然后createElement获取表格。有点不直接...但它的工作..谢谢你的建议,虽然。 :)