Innerhtml tbody в IE6-IE9 не может быть назначен, воспроизведенный код выглядит следующим образом
Кода -копия выглядит следующим образом:
<! Doctype html>
<html>
<голова>
<meta charset = "utf-8"/>
<title> IE6-IE9 innerhtml не может скопировать ошибку </title>
</head>
<Стиль тела = "Высота: 3000px">
<Таблица>
<tbody>
<tr> <td> aaa </td> </tr>
</tbody>
</table>
<p>
<button id = "btn1"> get </button> <button id = "btn2"> set </button>
</p>
<Скрипт>
var tbody = document.getelementsbytagname ('tbody') [0]
function settoby () {
tbody.innerhtml = '<tr> <td> bbb </td> </tr>'
}
функция gettbody () {
оповещение (tbody.innerhtml)
}
btn1.onclick = function () {
gettbody ()
}
btn2.onclick = function () {
Посещение ()
}
</script>
</body>
</html>
Две кнопки, первая, получает Innerhtml Tbody, а вторая устанавливает Innerhtml Tbody.
При его получении все браузеры появляются в строке TR, но при его настройке IE6-9 не поддерживает ее, и сообщается об ошибке, как показано на рисунке
Вы можете использовать характеристики, чтобы определить, поддерживает ли браузер настройку innerhtml tbody
Кода -копия выглядит следующим образом:
var isupporttbodyinnerhtml = function () {
var table = document.createElement ('table')
var tbody = document.createElement ('tbody')
Table.appendChild (tbody)
var boo = true
пытаться{
tbody.innerhtml = '<tr> </tr>'
} catch (e) {
boo = false
}
вернуть бу
} ()
Alert (isupporttbodyinnerhtml)
Для IE6-IE9, если вы хотите установить innerhtml tbody, вы можете использовать следующий альтернативный метод
Кода -копия выглядит следующим образом:
Функция SettyNnerHtml (tbody, html) {
var div = document.createElement ('div')
div.innerhtml = '<table>' + html + '</table>'
while (tbody.firstchild) {
tbody.removechild (tbody.firstchild)
}
tbody.appendchild (div.firstchild.firstchild)
}
Используйте Div, чтобы сдержать таблицу, затем удалить все элементы в TBOD и, наконец, добавьте первый элемент первого элемента DIV в TBODE, то есть Div> Table> Tr.
Конечно, существует более оптимизированная версия, которая напрямую использует метод Replacechild для замены
Кода -копия выглядит следующим образом:
Функция SettyNnerHtml (tbody, html) {
var div = document.createElement ('div')
div.innerhtml = '<table>' + html + '</table>'
tbody.parentnode.replacechild (div.firstchild.firstchild, tbody)
}
Из записи MSDN, Innerhtml Col, Colgroup, Frameset, HTML, головы, стиля, таблицы, TFOOT, Thead, Title и TR-все только для чтения (IE6-IA9).
Свойство Innerhtml только для чтения на Col, Colgroup, Frameset, HTML, Head, Style, Table, Tbody, Tfoot, Thead, Title и TR-объектах.
Вы можете изменить значение элемента заголовка, используя свойство document.title.
Чтобы изменить содержимое таблицы, TFOOT, Theade и TR -элементов, используйте модель объекта таблицы, динамически описанную в строительных таблицах. Однако, чтобы изменить содержание конкретной ячейки, вы можете использовать Innerhtml.