Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.05.2008, 17:36
Аватар для scuter
Профессор
Отправить личное сообщение для scuter Посмотреть профиль Найти все сообщения от scuter
 
Регистрация: 14.03.2008
Сообщений: 169

как создать елемент с вложеными елементами
есть элемент его создаём через createElement("script"),
ну так вот как создать в нём ещё несколько элементов,
прежде чем выполнить команду appendChild(answerScript),
или есть какая нибуть другая функция в которую можно задать многомерный массив и всё выйдет так как надо.
Ответить с цитированием
  #2 (permalink)  
Старый 06.05.2008, 18:42
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

чего ты пытаешься добиться такими странными манипуляциями? о_0
Ответить с цитированием
  #3 (permalink)  
Старый 06.05.2008, 19:06
Аватар для scuter
Профессор
Отправить личное сообщение для scuter Посмотреть профиль Найти все сообщения от scuter
 
Регистрация: 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);
Ответить с цитированием
  #4 (permalink)  
Старый 06.05.2008, 19:11
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 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 в 19:16.
Ответить с цитированием
  #5 (permalink)  
Старый 06.05.2008, 19:19
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

сериализуй в хтмл-строку и вставь через innerHTML.
Ответить с цитированием
  #6 (permalink)  
Старый 06.05.2008, 22:28
Аватар для scuter
Профессор
Отправить личное сообщение для scuter Посмотреть профиль Найти все сообщения от scuter
 
Регистрация: 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);
}
Ответить с цитированием
  #7 (permalink)  
Старый 06.05.2008, 22:36
Аватар для scuter
Профессор
Отправить личное сообщение для scuter Посмотреть профиль Найти все сообщения от scuter
 
Регистрация: 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 в 22:43. Причина: косяк
Ответить с цитированием
  #8 (permalink)  
Старый 08.05.2008, 19:05
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

scuter,
в ИЕ не работает изменение таблиц через innerHTML. используйте addRow и т.д.
Ответить с цитированием
  #9 (permalink)  
Старый 10.05.2008, 15:01
Аватар для scuter
Профессор
Отправить личное сообщение для scuter Посмотреть профиль Найти все сообщения от scuter
 
Регистрация: 14.03.2008
Сообщений: 169

так там не innerHTML, а createElement используется
Ответить с цитированием
  #10 (permalink)  
Старый 10.05.2008, 17:45
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

scuter, пардон, виноват. Тем не менее, поглядите сюда: http://support.microsoft.com/kb/239832, и попробуйте через insertRow и insertCell методы.

Последний раз редактировалось hogart, 10.05.2008 в 17:47.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать проверку вводимого пароля на стойкость, используя API Google. Александр Черепов Элементы интерфейса 4 03.11.2008 01:16
Как создать окно, определенной ширины и высоты AnIva Events/DOM/Window 2 17.09.2008 08:17
форма как в ExtJS 2 magistr_bender Общие вопросы Javascript 0 11.09.2008 15:01
Как создать событие? remitmaster Общие вопросы Javascript 9 26.07.2008 17:31