Проблема, есть скрипт
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 не могу навести фокус на элемент
гы-гы Нетшкаф рулит
вот такие дела что придумать
есть предположение, что IE, не может в такой ситуации сразу приложить к элементу стиль
как рекомендует W3C
всякое добавление новой строки(столбца) в таблицу с сохранением стилей нужно делать не через createElement, а cloneNode
тогда не придется делать body.innerHTML = body.innerHTML. (для IE)
Неткаш все съедал, вот как.
Здравствуйте, 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>гы-гы Нетшкаф рулит вот такие дела что придумать
Будьте добры объяснить нафига определять обычную таблицу таким вот способом блин (цель её практического применения — может и я возьму на вооружение)