Вопрос по javascript – Браузер Firefox не распознает table.cells?

2

У меня есть следующий код JavaScript.

var myCellCollection = document.getElementById('myTbl').cells;

Это хорошо работает в IE и возвращает коллекцию ячеек таблицы. Но та же самая строка возвращает "неопределенный" в Firefox. Я использую IE 9 и Firefox 12.

Ваш Ответ

2   ответа
4

document.getElementById("myTbl").getElementsByTagName('td');

@BorisZbarsky: Да, его школы. Извините за неправильную запись там. Но то, что я говорил, это попробовать этот пример, изменивalert вalert(document.getElementById("myTable").cells); И это хорошо работает! Horizon
Я только что попытался отредактировать его, как вы описываете, и в Firefox предупреждение показываетundefined, как и ожидалось.
Благодарю. Это выглядит как лучший способ сделать это. В справочнике W3C говорится, что Firefox поддерживает это [ссылка] (w3schools.com/jsref/coll_table_cells.asp). Кроме того, попытка tableObject.cells работает в случае этого примера в Firefoxlink Horizon
Это не "ссылка на W3C". Это школы. Что часто неправильно, и определенно неправильно в этом случае. Ваш пример там смотрит на .cells на столеrow, что на самом деле поддерживается всеми браузерами.
Я попробовал это снова и получаю предупреждение как "2". Я не могу загрузить снимок экрана из-за ограничений, но я буду искать способ поделиться им с вами. Это то, что Firefox хранит эти данные где-нибудь, и если я запускаю код сdocument.getElementById("myTable").rows[0].cells впервые и сdocument.getElementById("myTable").cells во второй раз он показывает тот же результат из магазина. Я проверю это на другой машине позже в тот же день. Horizon
1

портируя старое приложение Internet Explorer.

Warning:
container.getElementsByTagName('tagname') возвращаетсяALL элементы внутриcontainer это соответствует запросуtagname.

таким образомtable.getElementsByTagName('td') вернет всеtd& APOS; sincluding те из вложенных таблиц!
тем не мениеtable.cells не делает этого (где реализовано).

Кроме того, очевидно, что он не будет соответствоватьth, Таким образом, эти ячейки не находятся в возвращенном наборе, что может привести к «проблеме». о том, как разрешить их порядок относительно т ...

Подчеркнуть ожидаемую функциональностьtable.cells (возвращениеboth th а такжеtd в DOM-порядке), я написал следующую простую функцию:

function tableCells(t){
   if(t.cells) return t.cells; // use internal routine when supported
   for(var a=[], r=t.rows, y=0, c, x; t=r[y++];){
      for(c=t.cells, x=0; t=c[x++]; a.push(t));
   } 
   return a;
}

Alternatively, using 'single return' by 'if-else' packs to the same size exactly, yet the above gzips smaller. PS: I tried concat-ting the table.rows[X].cells, but that didn't work (although I wouldn't feel safe doing so anyways)

Usage example:
var identifier = tableCells( /*reference to table (or thead/tbody/tfoot) here*/ );
Он вернет массив (не живую коллекцию), как результатtable.cells.

Надеюсь, это поможет кому-то

Похожие вопросы