IE中的神秘运行时错误

时间:2011-02-01 18:38:27

标签: javascript internet-explorer runtime-error

IE版本:8.0.6001.18702

<tr id="week-days"></tr>

function displayWeekDay( lang )
{
    var txt = '<td>num</td>';
    for ( i = 0; i < langs[lang].day.length; i++ )
        if ( i == 5 )       txt += '<td class="red"><b>'   + langs[lang].day[i] + '</b></td>';
        else if ( i == 6 )  txt += '<td class="red"><b>'   + langs[lang].day[i] + '</b></td>';
        else                txt += '<td><b>'               + langs[lang].day[i] + '</b></td>';
    document.getElementById("week-days").innerHTML = txt;
}

错误在最后一行 - document.getElementById(“week-days”)。innerHTML = txt;

我有点困惑 - 有一个错误,但一切都正常显示。 Mozilla,Chrome,Safari都没有错误。任何想法都会被贬低。

编辑 enter image description here

2 个答案:

答案 0 :(得分:3)

来自MSDN:“table和tr对象的innerText和innerHTML属性是只读的”http://msdn.microsoft.com/en-us/library/ms532998(v=vs.85).aspx

解决方案是使用dom创建tr元素,或使用html构建完整的临时表,然后将行移动到目标表。如下所示:

/** Appends a row to the given tbody */
function appendRow(tbody, trHTML) {
  var tempNode = document.createElement('div');
  tempNode.innerHTML = "<table><tr>" + trHTML + "</tr></table>";
  var tempTable = tempNode.firstChild;
  tbody.appendChild(tempTable.rows[0] );
}

您可以修改函数以指定要插入的位置,或者在之前或之后插入另一个tr。

请参阅Can't set innerHTML on tbody in IE

答案 1 :(得分:1)

这听起来像是quite some time存在的IE问题。我过去曾经遇到过它。您可能想尝试通过DOM方法创建节点。

相关问题