Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: insertRow и ie
 
 автор: brys   (29.04.2009 в 04:41)   письмо автору
 
 

Подскажите как заставить эту конструкции работать в IE? в firefox работает как надо.

table = document.getElementById('tb_edit');
table.insertRow(-1).innerHTML = "text";

  Ответить  
 
 автор: PAT   (29.04.2009 в 09:28)   письмо автору
 
   для: brys   (29.04.2009 в 04:41)
 

В FireFox это работает совсем не "как надо".
Запустите в FireFox:
<script>
function f ()
{
table = document.getElementById('tb_edit');
table.insertRow (-1).innerHTML = "text";
}
</script>
<table id="tb_edit" cellpadding="40" cellspacing="0" border="1" onclick="f()">
<tr><td>123</td></tr>
<tr><td>456</td></tr>
</table>
и посмотрите - какого вида бордер получится у новой строки, и какой там будет паддинг.
Совсем ведь непохоже на предыдущие строки, не так ли?

А всё потому, что в строке должна быть ячейка, а вы её не создали.
FireFox вам эту глупость простил, а вот MSIE - нет.

Правильный вариант, который будет работать везде:
<script>
function f ()
{
table = document.getElementById('tb_edit');
table.insertRow (-1).insertCell (-1).innerHTML = "text";
}
</script>
<table id="tb_edit" cellpadding="40" cellspacing="0" border="1" onclick="f()">
<tr><td>123</td></tr>
<tr><td>456</td></tr>
</table>


И в принципе свойство innerHTML для тега <TR> в MSIE является read-only ("прочитать - можно, изменить - нельзя"), что, по большому счёту - правильно. Ибо единственное, что можно "написать" в строке - это будет ячейка. А для этого существует метод insertCell ().
Прочие браузеры (FireFox в их числе) разрешают писать строка.innerHTML = 'что-то';

  Ответить  
 
 автор: brys   (29.04.2009 в 13:10)   письмо автору
 
   для: PAT   (29.04.2009 в 09:28)
 

А если мне надо добавить пять td в один tr?

  Ответить  
 
 автор: PAT   (29.04.2009 в 13:37)   письмо автору
 
   для: brys   (29.04.2009 в 13:10)
 

Значится, добавляете 1 (ОДНУ) строку, а в неё добавляете 5 (ПЯТЬ) ячеек:
table = document.getElementById ('tb_edit');
var ro = table.insertRow (-1);
var ce = ro.insertCell (-1); ce.innerHTML = "text1"; 
var ce = ro.insertCell (-1); ce.innerHTML = "text2"; 
var ce = ro.insertCell (-1); ce.innerHTML = "text3"; 
var ce = ro.insertCell (-1); ce.innerHTML = "text4"; 
var ce = ro.insertCell (-1); ce.innerHTML = "text5"; 

  Ответить  
 
 автор: brys   (29.04.2009 в 14:49)   письмо автору
 
   для: PAT   (29.04.2009 в 13:37)
 

Спасибо, очень помогло

  Ответить  
 
 автор: Pulimet   (05.06.2010 в 18:55)   письмо автору
 
   для: brys   (29.04.2009 в 14:49)
 

Спасибо. Помогло.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования