Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавить строки к таблице, Обход RunTime Error в IE 
:(
    Опции темы
Elfet
  Дата 29.4.2004, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Два фрейма. В одном таблица и в неё нужно из другова фрейма вставлять ячейки! У меня не вышло! sad.gif
Код

dom = (document.getElementById) ? true : false;
nn4 = (document.layers) ? true : false;
ie = (document.all) ? true : false;
ie4 = ie && !dom;

var lit=new Array();

function getRef(id) {
 if (dom) return parent.tv.document.getElementById(id);
 if (ie4) return parent.tv.document.all[id];
 if (nn4) return parent.tv.document.layers[id];
}

lit[0]="<tr><td >ЙЙЙЙЙЙЙЙЙЙЙЙ</tr></td>";

function iamget()
{
var i;
var t="";
for(i=1; i > 0; i--){
t+=lit[i];
getRef("text").innerHTML=t+getRef("text").innerHTML;
};
}


Другой фрейм:

<table width="100%" cellspacing="1" cellpadding="1" border="0">
<tr><td height="5"></tr></td>
<q id="text"></q>
</table>


Это сообщение отредактировал(а) Elfet - 29.4.2004, 15:37


--------------------
PM MAIL WWW Skype   Вверх
Sardar
Дата 1.5.2004, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Elfet криво html пишешь: <tr><td height="5"></tr></td>
А теперь шутки в сторону... вообщем у тебя появилась трудно разрешимая задача...
IE круче всех отображает страницы, но вот DOM - это не MS технология и здесь у IE проблемы, конкретно с добавлением новых рядов в таблицу.
Если мы изменяем свойство innerHTML элемента, то мы по сути экономим время на createElement(), createTextNode(), appendChild() методах. Если юзать эти DOM'овские функции, то содержимое таблицы изменятся не будет, у Opera и Mozilla проблем нет. Если использовать DOM'овский innerHTML, то должна выскочить Runtime Error..., т.е. у IE срывает башню...

Думаю что тебе надо либо отказатся от таблиц, либо ждать патча smile.gif

Вот так должно работать следуя рекомендациям W3C:
Код

function appendText(text) {
var tb=document.getElementById("tablica");
var tr=document.createElement("TR"); //создадим строку
var td=document.createElement("TD"); // и ячейку таблицы
/* у ИЕ есть хорошее не стандартное свойство innerText
td.innerText=text;
 но мы будем писать согласно рекомендации DOM...
*/
td.appendChild(document.createTextNode(text)); //закинем в ячейку текст
tr.appendChild(td); //а саму ячейку в строку
tb.appendChild(tr); //и наконец в таблицу
/* либо проще
 tb.innerHTML+="<tr><td>"+text+</td></tr>";
*/
}



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Sardar
Дата 4.5.2004, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



У таблицы есть свой надинтерфейс: HTMLTableElement Interface, в котором присутствует метод insertRow(index). Тогда правильно добавить строки в таблицу можно так:
Код

table=document.getElementById("table_id" );
row=table.insertRow(table.rows.length); //в конец таблицы
row.innerHTML="<td>"+text+"</td>";

Разницы с предидущим способом никакой. IE продолжает нервно курить RunTime Error в сторонке...


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
mix
Дата 5.5.2004, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 23.2.2003

Репутация: нет
Всего: 1



Sardar Вы просто про TBody забыли. IE5.0+
Код
<script LANGUAGE=JavaScript TYPE=text/javascript>
<!--
function appendText(text) {
var Tb=document.getElementById("tablica");
var Tbd=document.createElement('TBODY'); //CОЗДАДИМ TBODY их может быть несколько
var Tr=document.createElement("TR"); //создадим строку
var Td=document.createElement("TD"); // и ячейку таблицы
/* у ИЕ есть хорошее не стандартное свойство innerText
td.innerText=text;
но мы будем писать согласно рекомендации DOM...
*/
Td.appendChild(document.createTextNode(text)); //закинем в ячейку текст
Tr.appendChild(Td); //а саму ячейку в строку
Tbd.appendChild(Tr);//А САМУ строку в TBODY
Tb.appendChild(Tbd); //и наконец в таблицу
/* либо проще
tb.innerHTML+="<tr><td>"+text+</td></tr>";
*/
}
window.onload=function()//Когда страница загрузилась полностью
{
appendText('Добавили мы этот текст')
appendText('А потом ещё вот этот')
}
//-->
</SCRIPT>


<TABLE border=1 id=tablica>
<TR>
<TD>ФФ</TD>
</TR>
<TR>
<TD>FF</TD>
</TR>
</TABLE>



PM MAIL   Вверх
Sardar
Дата 6.5.2004, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Ну спасибо !!!

Действительно работает, мне надо бы точнее следить за своими ответами smile.gif

Интересно что Gecko браузерам и Opere по барабану добавляем ли мы строку к таблице либо к ТBody - это ошибка ИЕ, т.к. метод интерфейса таблицы insertRow должен был работать.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Sardar
Дата 20.12.2004, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Elfet ты только ноду добавить можешь. Следовательно юзай document.createElement, document.createTextNode или пользуйся innerHTML.

А вообще запости чуток кода и лучше в отдельном топике.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Sardar
Дата 20.12.2004, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Elfet сейчас минусы давать буду! Открывай новый топик и так такой хороший ответ зафлеймили smile

innerHTML не есть часть стандарта от W3c, введён для удобства. На второй вопрос: обращайся к Td.style.что угодно, и выброси все свои старые нетшкафовые скрипты, что бы по такому бреду не учтися.

Вычищаю твой и ALEXANDRO флуд.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.