prototype.js - Element.insert (Element) игнорируется в IE 6? - PullRequest
3 голосов
/ 03 июня 2009

Я использую IE 6 (корпоративная версия) в XP, а также (в первую очередь) Firefox 3. В них я делаю таблицу DHTML с использованием библиотеки prototype.js версии 1.6.0.3.

У меня есть код javascript обработчика событий для добавления строки в таблицу, которая отлично работает в Firefox, но полностью игнорируется в Internet Explorer. Я могу пройтись по коду в MS «скрипт-отладчик» (да, я знаю, что он старый и устарел, но он был доступен), поэтому я знаю, что событие перехватывается.

Код имеет вид:

var xTable = $( 'x_list')  // id of x...
var aRow = new Element( 'tr')
aRow.setAttribute( 'id', id)
. . .
var xEl = new Element( 'td')
. . .
aRow.insert( xEl)
. . .
// alert( aRow.inspect() )
// alert( xTable.inspect() )
debugger  // check insert() implementation under IE
xTable.insert( aRow)

Кто-нибудь еще сталкивался с конфликтами между Element.insert () и Explorer?

Ответы [ 3 ]

6 голосов
/ 03 июня 2009

Вы должны вставить новые элементы TR в TBODY, а не прямо в TABLE. Иначе IE не покажет / вставит / что бы то ни было.

2 голосов
/ 03 июня 2009

Попробуйте создать элемент <tbody> внутри <table>, с которым вы работаете, и затем добавьте к этому элементу вместо <table>.

Это первое, что я бы попробовал. Я смутно помню, как манипулирование таблицами в Javascript было странным, если не было элемента <tbody>.

1 голос
/ 29 августа 2009

slosd ответил отлично, только небольшое дополнение: TBODY требуется и в IE7, но не в IE8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...