2012-08-06 75 views
0

我正在使用javascript在页面中添加一个表。JavaScript正在关闭我的HTML标记

$("#tablediv").append("<table border = '1'><tbody><tr><td width='100px'><b>Result</b></td><td width='100px'><b>Binding</b></td><td width='744px'><b>Value</b></td></tr>"); 

的问题是,什么是运行</tbody></table>是越来越在末尾添加。

我该如何阻止这种情况发生?

谢谢。

+5

你不能一个不完整的元素添加到DOM树。我认为即使您的HTML已损坏,jQuery也会相应地创建这些元素。 – Amberlamps 2012-08-06 10:52:13

+2

你想完成什么?为什么你不想关闭表格标签? – JJJ 2012-08-06 10:53:03

+2

没有理由要将不完整的HTML插入到DOM中。如果你这样做(正如你试图),然后通过DOM检查器检查它们,他们可能会向你显示正确的HTML - 在你的情况下,标签关闭。如果您想在关闭标签之前对HTML进行进一步的操作,请远离DOM执行此操作,然后只准备好所有内容。 – Utkanos 2012-08-06 10:55:16

回答

1

您是否想在添加新元素后创建它?

ID你的表,然后追加到。

$("#tablediv") 
    .append("<table id='mytable' border = '1'><tbody><tr><td width='100px'><b>Result</b></td><td width='100px'><b>Binding</b></td><td width='744px'><b>Value</b></td></tr></table>");​​​ 

$("#mytable") 
    .append("<tr><td>Bla</td><td>Foo</td><td>Bar</td></tr>"); 

调用 jQuery函数每次添加新行您的餐桌。

+0

为了提高性能,最好追加一个var而不是为每个元素调用jQuery – 2012-08-06 11:57:39

2

我的印象是你想要的,所以你可以循环输出你的结果?

var table = "<table border = '1'><tbody><tr><td width='100px'><b>Result</b></td><td width='100px'><b>Binding</b></td><td width='744px'><b>Value</b></td></tr>"; 
// loop through your data here 
table += "</tbody></table>"; 

document.getElementById("tablediv").innerHTML += table; 
+0

Firefox和chrome仍会添加结束标记。不能说关于IE – 2012-08-06 10:57:04

+0

请注意,在表完成创建之后,表如何不被添加到DOM。我相信这就是这个人想要的(所以他可以循环他的结果,当他走的时候将它们添加到桌子上) – SReject 2012-08-06 10:58:25

1

创建无功,你的东西附加到它,然后当你准备好电话.append(HTML)

var html = ""; 
html += "<table border = '1'><tbody><tr><td width='100px'><b>Result</b></td><td width='100px'><b>Binding</b></td><td width='744px'><b>Value</b></td></tr>" 
$("#tablediv").append(html); 
1

你不能。您正在使用DOM,而不是HTML流。

jQuery允许您使用HTML语法来描述要创建的DOM片段(然后您可以插入或以其他方式操作),但这只是为了方便。如果HTML不是有效的片段,则会纠正错误。

如果你要处理的HTML片段,你必须做这样的字符串,而不是jQuery的对象