IE6 and Netscape
От: andik  
Дата: 31.01.03 09:43
Оценка:
Проблема, есть скрипт


function dataTableBuild() {

    var body = document.body;
    var hTab = document.createElement("TABLE");
    var hTtr = document.createElement("TR");
    var hTtd = document.createElement("TD");
    
    var txt = document.createTextNode("Test");
    hTtd.appendChild(txt);
    var frm = document.createElement("FORM");
    frm.setAttribute("name", "frm");
    frm.setAttribute("id", "frm");

    var inp = document.createElement("INPUT");
    inp.setAttribute("type", "text");
    inp.setAttribute("id", "txt");
    inp.setAttribute("name", "txt");
    inp.setAttribute("value", "test");

    frm.appendChild(inp);
    hTtd.appendChild(frm);

    hTtr.appendChild(hTtd);
    hTab.appendChild(hTtr);
    body.appendChild(hTab);
    
    alert(body.innerHTML);
    
    body.innerHTML = body.innerHTML;
}

вопрос. Почеиу IE6 без выполнения команды body.innerHTML = body.innerHTML ничего не выводить. При последующем добавлении ,например строки таблцы, может ее вывести, но развернет всю таблицу, пока не выполнишь опять эту команду. Но после нее в IE не могу навести фокус на элемент

гы-гы Нетшкаф рулит вот такие дела что придумать
Re: IE6 and Netscape
От: andik  
Дата: 31.01.03 10:01
Оценка:
есть предположение, что IE, не может в такой ситуации сразу приложить к элементу стиль
Re: Решение
От: andik  
Дата: 31.01.03 15:12
Оценка:
как рекомендует W3C

всякое добавление новой строки(столбца) в таблицу с сохранением стилей нужно делать не через createElement, а cloneNode
тогда не придется делать body.innerHTML = body.innerHTML. (для IE)

Неткаш все съедал, вот как.
Re: IE6 and Netscape
От: Konstantin Sokolovskiy  
Дата: 03.02.03 15:25
Оценка: 1 (1)
Здравствуйте, andik, Вы писали:

Все дело в том, что IE очень трепетно относится к процессу создания таблиц
Боже упаси написать что-нибудь вроде

oTableObj.innerHTML = "<tr><td>Text</td></tr>";


В данном случае примерно тоже самое привожит к кривой работе.
В IE для динамического создания строк/столбцов нужно вызывать соответствующие методы insertRow и insertCell.

Таким образом функция будет выглядеть так:

function dataTableBuild() 
{

    var body = document.body;
    var hTab = document.createElement("TABLE");
    var hTtr = hTab.insertRow( );
    //var hTtr = document.createElement("TR");
    var hTtd = hTtr.insertCell( );
    //var hTtd = document.createElement("TD");
    
    var txt = document.createTextNode("Test");
    hTtd.appendChild(txt);
    var frm = document.createElement("FORM");
    frm.setAttribute("name", "frm");
    frm.setAttribute("id", "frm");

    var inp = document.createElement("INPUT");
    inp.setAttribute("type", "text");
    inp.setAttribute("id", "txt");
    inp.setAttribute("name", "txt");
    inp.setAttribute("value", "test");

    frm.appendChild(inp);
    hTtd.appendChild(frm);

    //hTtr.appendChild(hTtd);
    //hTab.appendChild(hTtr);
    body.appendChild(hTab);
    
    //alert(body.innerHTML);
    
    //body.innerHTML = body.innerHTML;
}



A>Проблема, есть скрипт


A>

A>function dataTableBuild() {

A>    var body = document.body;
A>    var hTab = document.createElement("TABLE");
A>    var hTtr = document.createElement("TR");
A>    var hTtd = document.createElement("TD");
A>    
A>    var txt = document.createTextNode("Test");
A>    hTtd.appendChild(txt);
A>    var frm = document.createElement("FORM");
A>    frm.setAttribute("name", "frm");
A>    frm.setAttribute("id", "frm");

A>    var inp = document.createElement("INPUT");
A>    inp.setAttribute("type", "text");
A>    inp.setAttribute("id", "txt");
A>    inp.setAttribute("name", "txt");
A>    inp.setAttribute("value", "test");

A>    frm.appendChild(inp);
A>    hTtd.appendChild(frm);

A>    hTtr.appendChild(hTtd);
A>    hTab.appendChild(hTtr);
A>    body.appendChild(hTab);
A>    
A>    alert(body.innerHTML);
A>    
A>    body.innerHTML = body.innerHTML;
A>}
A>

A>вопрос. Почеиу IE6 без выполнения команды body.innerHTML = body.innerHTML ничего не выводить. При последующем добавлении ,например строки таблцы, может ее вывести, но развернет всю таблицу, пока не выполнишь опять эту команду. Но после нее в IE не могу навести фокус на элемент

A>гы-гы Нетшкаф рулит вот такие дела что придумать
Re: IE6 and Netscape
От: AI Россия  
Дата: 03.02.03 18:15
Оценка:
Будьте добры объяснить нафига определять обычную таблицу таким вот способом блин (цель её практического применения — может и я возьму на вооружение)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.