0

大家好,我有一个 IE8 问题,这是代码:

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");
    }
});
}

Always 在 Firefox、Chrome 和 Opera 中是完美的,但在 IE8 中,表格中没有显示任何内容。我该如何管理?

4

2 回答 2

2

我不是 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>,而 body 元素然后被包装在一个<tbody>元素中。大多数浏览器似乎都很好地解析表格甚至没有这些,但我指出它可能是您问题的根源。

  • 最后一个潜在问题是 IE 一直到 IE9 都无法在表格上设置 innerHTML。看到IE9 createElement 和在 set 操作上设置 innerHTML 放置标签?并且无法在 IE 中的 tbody 上使用 innerHTML 以获取更多信息。我不知道 JQuery 如何更新表数据。我认为如果他们依赖这种方法,我们会在这里看到更多关于它的问题,但谁知道呢。

于 2012-10-31T16:11:05.567 回答
0

工作解决方案:

根据马特首先我以这种方式声明表格:

<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>';

全面工作:)

于 2012-10-31T16:26:52.443 回答