什么是在IE中将X行插入表格的最佳普通javascript方式。在表格中插入行
表HTML如下:
<table><tbody id='tb'><tr><td>1</td><td>2</td></tr></tbody></table>
我需要做的,是删除旧体,并插入一个新的有1000行。我有1000行作为javascript字符串变量。
问题是IE中的表没有innerHTML函数。我见过很多黑客可以做,但我想看看你最好的一个。
注意:使用jQuery或任何其他框架不计算在内。
什么是在IE中将X行插入表格的最佳普通javascript方式。在表格中插入行
表HTML如下:
<table><tbody id='tb'><tr><td>1</td><td>2</td></tr></tbody></table>
我需要做的,是删除旧体,并插入一个新的有1000行。我有1000行作为javascript字符串变量。
问题是IE中的表没有innerHTML函数。我见过很多黑客可以做,但我想看看你最好的一个。
注意:使用jQuery或任何其他框架不计算在内。
这里是由家伙一个伟大的文章,谁执行IE的innerHTML=
上how he got IE to do tbody.innerHTML="<tr>..."
:
起初,我认为IE是不是 能够执行重绘与innerHTML的 修改的表,但 后来我记得我是 负责这个限制!
顺便说一句,他使用的伎俩是基本上所有的框架是如何做到这一点的table
/tbody
元素。
编辑:@mkoryak,你的评论告诉我你没有想象力,也不值得回答。但无论如何,我会幽默的。你的观点:
>他是不是将我需要
什?他将行(他作为html字符串)插入到table
元素中。
>他还使用一个额外的隐藏元素
该元素的要点是要说明,所有IE需要的是“背景”。您可以使用动态创建的元素(document.createElement('div')
)。
>,也是文章是老
我不会再帮助你;)
但严重的是,如果你想了解其他人如何实现它,看看jQuery的源jQuery.clean()
或Prototype的Element._insertionTranslations
。
像jQuery那样做,例如。在它周围添加<table>
和</table>
,插入到文档中,并将所需的节点移动到您想要的位置,然后消除temp元素。
代码结束了这一点:
if($.support.scriptEval){
//browser needs to support evaluating scripts as they are inserted into document
var temp = document.createElement('div');
temp.innerHTML = "<table><tbody id='"+bodyId +"'>"+html;
var tb = $body[0];
tb.parentNode.replaceChild(temp.firstChild.firstChild, tb);
temp = null;
$body= $("#" + bodyId);
} else {
//this way manually evaluates each inserted script
$body.html(html);
}
东西斋事先存在:具有体“bodyId”的ID的表。 $ body是一个全局变量(或者函数有一个闭包),并且在那里也有一些jquery,因为IE不会评估插入到html中的脚本。
我遇到了同样的问题(和很多其他人一样),经过大量的游戏工作后,我得到了工作。
你必须通过document.createelement('tr')创建一个tr,然后以同样的方式创建一个td。 将tr附加到tr,appendchild tr到tbody(不是表)然后你可以innerhtml你创建的td,它会起作用。 这是ie8我正在使用。基本上,表结构必须由createelement创建,但其余部分可以是innerHTMLed。我在IE8调试器中这样做,它会说它会添加它(如果我做了tr.innerhtml =“blah”)并且没有错误,但它不会显示,并且html dom视图显示非常破碎表(没有td曾经出现,但/ td)
所以当最后我通过createelement调用完成tr和td时,它创建了一个正确的外观并正确地绘制了页面。
哈哈哈,我今天刚读到这个!这是一个很好的阅读。用于reddit的Hooray。 :D – 2009-03-02 22:38:26