使用 javascript 将内容添加到表格行 ()?
我有一个如下表:
<table>
<tr>
<td>col 1</td><td>col2</td>
</tr>
<tr id="insert">
<td>field</td><td>Field 2</td>
</tr>
<tr>
<td>another field</td><td>one more field</td>
</tr>
</table>
现在的问题是我需要在中间行(id = insert)之后动态插入新行。我有一个自定义的 javascript 函数,可以通过对下一个元素使用 insertBefore 调用来在元素之后插入元素。
使用以下 javascript 成功创建新行:
var new_row = document.createElement('tr');
new_row.innerHTML="<td>test</td>";
insertAfter(document.getElementById("insert"), new_row);
但是,新行拒绝接受使用innerHTML 的任何简单 html 格式。新行的最终输出如下所示:
<tr>test</tr>
您会看到它不想输出我指定的内容。实际的脚本要复杂得多,因此不幸的是,使用appendChild或类似函数手动添加每个脚本将非常耗时,而且可能相当耗费资源。无论如何,我是否可以向该表行添加一个“html 块”,并在该块中定义表列?
我很困惑,非常感谢任何帮助。
I have a table as follows:
<table>
<tr>
<td>col 1</td><td>col2</td>
</tr>
<tr id="insert">
<td>field</td><td>Field 2</td>
</tr>
<tr>
<td>another field</td><td>one more field</td>
</tr>
</table>
Now the issue is that I need to dynamically insert new rows AFTER the middle row (id = insert). I have a custom javascript function to insert elementsAFTER an element by using an insertBefore call on the next element.
The new rows create successfully using the following javascript:
var new_row = document.createElement('tr');
new_row.innerHTML="<td>test</td>";
insertAfter(document.getElementById("insert"), new_row);
However, the new row refuses to accept any simple html formatting using the innerHTML. The final output of the new row looks something like:
<tr>test</tr>
You see it doesn't want to output the I have specified. The actual script is a lot more complex and so unfortunately manually adding each using an appendChild or similar function would be far too time consuming and probably rather resource intensive. Is there anyway I can just add a 'chunk of html' to this table row and in this chunk define the table columns?
I'm baffled, any help is MUCH appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用本机
insertCell()
方法插入单元格。尝试一下:
示例: http://jsfiddle.net/VzTJa/
或者您也可以在没有
insertAfter()
函数的情况下使用insertRow()
来完成此操作。示例: http://jsfiddle.net/VzTJa/1/
给出尝试一下这个解决方法:
示例: http://jsfiddle.net/VzTJa/2/
基本上创建了几个表示表格的开始和结束标记的字符串。您将它与您的内容连接起来,并将其设置为临时
div
的innerHTMl
,然后获取所需的行,并执行.appendChild()< /代码>。
可能有更好的方法,或者你可能会找到一种方法来改进这个方法。
我在浏览这篇文章中的解决方案后想到了这个显然是在 IE 上工作并且部分负责解析器的家伙。
You can use the native
insertCell()
method to insert cells.Give this a try:
Example: http://jsfiddle.net/VzTJa/
or you can accomplish it without your
insertAfter()
function by usinginsertRow()
as well.Example: http://jsfiddle.net/VzTJa/1/
Give this workaround a try:
Example: http://jsfiddle.net/VzTJa/2/
Basically creates a couple strings representing the opening and closing tags of a table. You concatenate it with your content, and set it as the
innerHTMl
of a temporarydiv
, then fetch the row you want, and do an.appendChild()
.There may be a better way, or you may find a way to improve this one.
I came up with this after glancing at a solution in this article from a guy who apparently worked on IE and is partly responsible for the parser.
如果您可以使用 jQuery,请尝试其中的追加方法。 jQuery 附加参考
如果您确实发现性能是一个问题,您可能会通过构建您想要在 javascript 中添加动态 DOM,然后将其附加到实际的 HTML DOM 元素以使其可见。这将使您的重涂次数降至最低。
If you can use jQuery, try the append method from it. jQuery append reference
If you do find performance to be an issue, you might find an improvement by building up the dynamic DOM you want to add in javascript before appending it to the actual HTML DOM element that will make it visible. This will keep your number of repaints to a minimum.