06.05.2008, 18:36
|
|
Профессор
|
|
Регистрация: 14.03.2008
Сообщений: 169
|
|
как создать елемент с вложеными елементами
есть элемент его создаём через createElement("script"),
ну так вот как создать в нём ещё несколько элементов,
прежде чем выполнить команду appendChild(answerScript),
или есть какая нибуть другая функция в которую можно задать многомерный массив и всё выйдет так как надо.
|
|
06.05.2008, 19:42
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
чего ты пытаешься добиться такими странными манипуляциями? о_0
|
|
06.05.2008, 20:06
|
|
Профессор
|
|
Регистрация: 14.03.2008
Сообщений: 169
|
|
просто надо как то задать массив,
например так,
var mx = [{
tagname:'table',
Child:[{
tagname:'tr',
Child:[{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
}]
},{
tagname:'tr',
Child:[{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
}]
}]
}];
потом этот массив преобразовать в HTML сод и воткнуть в страницу,
примерно так,
document.body.appendChild(mx);
|
|
06.05.2008, 20:11
|
|
Профессор
|
|
Регистрация: 06.05.2008
Сообщений: 765
|
|
Или не совсем понял суть вопроса или
var _el = document.createElement("script");
function appendElements(_arr) {
for (var i=0; i<_arr.length; i++) {
_el.appendChild(document.createElement(_arr[i]));
}
document.appendChild(_el);
}
м.б. где-то нварал %)
ПС. Начал писать еще до появления последнего поста.
А сразу через innerHTML нельзя?
Последний раз редактировалось Snipe, 06.05.2008 в 20:16.
|
|
06.05.2008, 20:19
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
сериализуй в хтмл-строку и вставь через innerHTML.
|
|
06.05.2008, 23:28
|
|
Профессор
|
|
Регистрация: 14.03.2008
Сообщений: 169
|
|
ни как не понимаю почему то такая штука не работает,
function addComponent(_obj, _arr)
{
for(var k in _arr)
{
if(typeof _arr[k].tagname == 'string')
{
var tag = _arr[k].tagname;
var Component = document.createElement(tag);
alert(typeof Component);
if(typeof _arr[k].attributes == 'object')
{
var attributes = _arr[k].attributes;
for(var d in attributes)
{
if(typeof attributes[d] == 'string')
{
Component[d] = attributes[d];
}
}
}
var domComponent = _obj.appendChild(Component);
if(typeof _arr[k].Child == 'object')
{
addComponent(domComponent, _arr[k].Child);
}
}
}
}
function init()
{
var mx = [{
tagname:'table',
attributes:{
width:'100%',
height:'600',
bgcolor:'#0000CC'
},
Child:[{
tagname:'tr',
Child:[{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
}]
},{
tagname:'tr',
Child:[{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
}]
}]
}];
addComponent(document.body, mx);
}
|
|
06.05.2008, 23:36
|
|
Профессор
|
|
Регистрация: 14.03.2008
Сообщений: 169
|
|
в опере заработало,
function addComponent(_obj, _arr)
{
for(var k in _arr)
{
if(typeof _arr[k].tagname == 'string')
{
var tag = _arr[k].tagname;
var Component = document.createElement(tag);
//alert(typeof Component);
if(typeof _arr[k].attributes == 'object')
{
var attributes = _arr[k].attributes;
for(var d in attributes)
{
if(typeof attributes[d] == 'string')
{
Component[d] = attributes[d];
}
}
}
if(typeof _arr[k].innerHTML == 'string')
{
Component.innerHTML = _arr[k].innerHTML;
}
var domComponent = _obj.appendChild(Component);
if(typeof _arr[k].Child == 'object')
{
addComponent(domComponent, _arr[k].Child);
}
}
}
}
function init()
{
var mx = [{
tagname:'table',
attributes:{
width:'100%',
height:'600',
bgColor:'#0000CC'
},
Child:[{
tagname:'tr',
Child:[{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
}]
},{
tagname:'tr',
Child:[{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
},{
tagname:'td',
innerHTML:'text text text text text text '
}]
}]
}];
addComponent(document.body, mx);
}
в IE таблица вроди как существует, но её почему то не видно
Последний раз редактировалось scuter, 06.05.2008 в 23:43.
Причина: косяк
|
|
08.05.2008, 20:05
|
Профессор
|
|
Регистрация: 18.04.2008
Сообщений: 152
|
|
scuter,
в ИЕ не работает изменение таблиц через innerHTML. используйте addRow и т.д.
|
|
10.05.2008, 16:01
|
|
Профессор
|
|
Регистрация: 14.03.2008
Сообщений: 169
|
|
так там не innerHTML, а createElement используется
|
|
10.05.2008, 18:45
|
Профессор
|
|
Регистрация: 18.04.2008
Сообщений: 152
|
|
scuter, пардон, виноват. Тем не менее, поглядите сюда: http://support.microsoft.com/kb/239832, и попробуйте через insertRow и insertCell методы.
Последний раз редактировалось hogart, 10.05.2008 в 18:47.
|
|
|
|