Javascript innerHTML / jQuery .html() IE显示错误-添加表格到div



我使用AJAX调用脚本生成一个HTML表。

从脚本的输出中获得表的HTML后,我用新的HTML替换了目标容器div的HTML。

$('#table_container').html(data);还是……document.getElementById('table_container').innerHTML(data);

在Firefox中,表按照我的要求显示在div中。

在Internet Explorer中,会显示表格,然后在表格的下面,会有一些额外的文本,通常是10-20个字符,取自表格中(看似)随机的位置。

我已经通过W3C验证器验证了ajax调用中的HTML。我正在使用文档类型在我的页面的类型:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

为什么IE会显示这个额外的文本?

我个人的运气总是比较好:

$("#table_container").empty();
$("#table_container").append(data);

我不知道潜在问题的根源是什么,我不知道这是否会有所帮助,但您可以尝试使用remove()和appendTo(),看看IE是否正确对待它。根据我的经验,这通常效果更好。

$(data).appendTo($('#table_container'));

另外,如果有可能链接到实际的网站,我可能能够进一步帮助。

听起来你的字符串中有一些文本破坏了表格的html。

尝试使用

$string = htmlentities($string);

在表格单元格中的字符串上的

......

谢谢大家的建议。

事实证明,问题是由于表中的空白单元格。

这将导致错误:

<td></td>

这是可以接受的:

<td> </td>

(对我来说)奇怪的是,如果我将HTML转储为一个平面的。HTML文件并查看它,就不会有问题。但是,当我使用JS将相同的HTML标记添加到div中时,问题就出现了。

来吧!: -)

最新更新