Еще один appndchild не работает в IE - PullRequest
0 голосов
/ 06 октября 2011

У меня есть функция appendChild JS, которая прекрасно работает во всех браузерах, кроме IE.

Я использую массив JS и добавляю эти данные в таблицу.

http://jsfiddle.net/2waZ2/51/ Имеет код - и отлично работает в скрипке!

Я просмотрел другие ответы, и их проблемы, похоже, немного отличаются от моих. Может быть, мне просто нужно сделать тело, но я действительно не знаю, как это сделать.

Какой лучший способ переписать это для работы в Ie?

Добавить часть кода, как в скрипте:

var row =  document.createElement('tr');
row.innerHTML = displayArrayAsTable(QR4, 24, 25);
document.getElementById('mytable').appendChild( row ) ; 

function displayArrayAsTable( array, from, to ) {
  var array = array || [],
  from = from || 0,
  to = to || 0;
 var html = '';

 if ( array.length < 1 )
{
  return;
}
if ( to == 0 )
{
    to = array.length - 1;
}
for ( var x = from; x < to + 1; x++ )
 {
html += '<td>' + array[x] + '</td>';
}
 return html;
}

1 Ответ

2 голосов
/ 06 октября 2011

Лучшим способом было бы использовать insertRow [MDN] :

var row = document.getElementById('mytable').insertRow(-1);
row.innerHTML = displayArrayAsTable(QR4, 24, 25);

Что касается tBody:Да, это может быть проблемой.Браузер всегда генерирует элемент tBody, независимо от того, указан он в HTML или нет.
Возможно, вы можете решить свою проблему, просто добавив новую строку в этот элемент tBody:

document.getElementById('mytable').tBodies[0].appendChild( row );

Но я помню, что читал, что у IE были проблемы с манипулированием таблицами с помощью обычных методов манипулирования DOM.Применимо ли это и в этом случае, я не знаю.insertRow должно работать в любом случае.

Обновление: Действительно, кажется, что IE также не любит добавлять td элементы с innerHTML.Решением было бы передать row также в качестве параметра displayArrayAsTable и использовать insertCell [MDN] для создания новой ячейки.

Обновление 2: Например, вы можете сделать это так:

for ( var x = from; x < to + 1; x++ )
{
    var cell = row.insertCell(-1);
    cell.innerHTML = array[x];
}

, где row - четвертый параметр функции и называется:

var row = document.getElementById('mytable').insertRow(-1);
displayArrayAsTable(QR4, 24, 25, row);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...