Таинственная ошибка времени выполнения в IE - PullRequest
1 голос
/ 01 февраля 2011

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 ("дни недели"). InnerHTML = txt;

Я немного запутался - есть ошибка, но все отображается правильно. На Mozilla, Chrome, Safari нет ошибок. Любая идея будет оценена.

редактировать enter image description here

Ответы [ 2 ]

3 голосов
/ 01 февраля 2011

Из MSDN: «свойства innerText и innerHTML для таблицы и объектов tr доступны только для чтения» http://msdn.microsoft.com/en-us/library/ms532998(v=vs.85).aspx

Решение - создать элемент tr с помощью dom или создать полную временную таблицу с использованием 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] );
}

Вы можете изменить функцию, указав место для вставки или другое поле для вставки до или после.

См. Невозможно установить innerHTML для тела в IE

1 голос
/ 01 февраля 2011

Это звучит как проблема IE, существовавшая в течение довольно долгое время .Я столкнулся с этим сам в прошлом.Возможно, вы захотите попробовать создать узлы с помощью методов DOM.

...