嗨,我已经是IE8 ISSURE,这是代码:
html代码:
<table id="myTable" border="1">
JavaScript函数:
function loadTableContent() {
$.ajax({
type : 'GET',
url : '/sohara/viewResults.do',
contentType : 'application/json; charset=utf-8',
success : function(response) {
result = response;
var html_Table = '';
html_Table += '<tr><th bgcolor="silver">Type</th>
<th bgcolor="silver">Quantity A</th>
<th bgcolor="silver">Quantity B</th></tr>';
for ( var i = 0; i < result.length; i++) {
html_Table += '<tr>';
html_Table += '<td>'+result[i].description+'</td>';
html_Table += '<td>'+result[i].quantityA+'</td>';
html_Table += '<td>'+result[i].quantityB+'</td>';
html_Table += '</tr>';
}
html_Table += '</table>';
$("#myTable").append(html_Table);
},
error : function(response) {
alert("Error");
}
});
}
在Firefox,Chrome和Opera中总是很完美,但在IE8中,桌子上没有显示任何内容。我该如何管理?
我不是100%发生的事情,而是某些可能性:
-
您的
<table>
元素不完整,因为它没有结尾标签。我最初以为这仅仅是因为您很简洁,并且没有将其包括在示例中,但是后来我注意到您将</table>
包括在JavaScript中。您需要在HTML中正常终止标签,例如:<table id="myTable" border="1"></table>
然后在JavaScript中使用它(并删除您附加JS中的结尾标签)
-
此外,我认为HTML规格说该表标头行(例如您的TH标签)应包裹在
<thead>
元素中(例如<table><thead><tr><th>Header</th></tr></thead></table>
,而车身元素则将其包裹在<tbody>
元素中。即使没有这些浏览器,大多数浏览器也似乎很好,但我指出这是您问题的可能来源。 -
最后一个潜在的问题是IE一直无法在桌子上设置InnerHTML。请参阅IE9 CreateElement并在设定操作上设置InnerHTML掉落标签?并且无法在IE中的tbody上进行Innerhtml,以获取更多信息。我不知道jQuery如何更新表数据。我认为,如果他们依靠这种方法,我们会在这里看到更多问题,但是谁知道。
工作解决方案:
根据马特(Matt),我以这种方式声明表:
<table id="myTable" border="1"></table> // FULL working method
实际上,如果我不关闭,则IE8会自动关闭HTML标签,从而在附加新的HTML代码中引起多个问题:
<table id="myTable" border="1"></> // NOT working method
然后而不是使用:
$("#myTable).append(html_Table);
我使用:
$("#myTable).html(html_Table);
显然我必须从ajax删除:
html_Table += '</table>';
完整工作:)