Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как "достать" все объекты документа (https://javascript.ru/forum/misc/32338-kak-dostat-vse-obekty-dokumenta.html)

macdack 12.10.2012 09:54

как "достать" все объекты документа
 
все элементы хтмл-документа можно создавать яваскриптом
а как сохранить все элементы-узлы объекта document со всеми ид классами и тд
например для повторного создания всех этих узлов

Maxmaxmахimus 12.10.2012 11:21

element.cloneNode()

macdack 12.10.2012 11:26

я имел в виду не копирование и вставку
а экспорт например в json всех хэлементов dom
и импорта из json для воссоздания dom

dmitriymar 12.10.2012 11:40

Не выйдет так просто -после перекидки объект -ясон-объект , объект уже не будет иметь тип htmlElement. Нужно писать парсер элемент-ясон-элемент. Можно обойтись без парсера элемент-ясон конечно а сделать через стандартный перевод в ясон.

Maxmaxmахimus 12.10.2012 11:44

парсер чтобы сохранял нужные важные для тебя параметры элемента и записывал ил в ясон(ну и транскрипция) , и наоборот.
ну еще как вариант похранить

element.innerHTML сроку))
но не факт что сохранятся и обработчики

bes 12.10.2012 11:59

сохранить во фрагменте, потом вставить
<head>
<script>
window.onload = function () {

	function createTree(el, par) {
		var ul = document.createElement('ul');
		par.appendChild(ul);
		var childs = el.children;
		var len = childs.length;
		for (var i = 0; i < len; i++) {
			var li = document.createElement('li');
			li.innerHTML = childs[i].tagName; 
			ul.appendChild(li);
			createTree(childs[i], ul);
		}
	}
	
	var frag = document.createDocumentFragment();
	createTree(document.body, frag);
	document.body.appendChild(frag);
}
</script>
</head>
<body>
<div>
	<div>
		<span>span</span>
		<button>button1</button>
		<input>
	</div>
	<div>
	<form>
		<input>
		<input>
		<span>span2</span>
		<button>button2</button>
	</form>
	</div>
</div>
<div>
	<div>
		<span>span</span>
		<button>button1</button>
		<input>
	</div>
	<div>
	<form>
		<input>
		<input>
		<span>span2</span>
		<button>button2</button>
	</form>
	</div>
</div>
</body>

macdack 12.10.2012 12:09

мужики, вопрос концептуальный - все узлы DOM это элементы объекта document

это обычный объект со свойствами
можно добавлять эти свойства как в обычный объект JS

соответственно должен быть простой способ сохранения этого объекта со всеми его свойствами, например сохраниения на клиенте или в БД на сервере - самое логичное конечно же JSON причем без всяких конвертаций же

dmitriymar 12.10.2012 12:39

Цитата:

Сообщение от macdack
это обычный объект со свойствами

да вот болт
var div=document.createElement('div');
alert( div);
div=JSON.parse(JSON.stringify(div));
alert( div);
var a={};
alert(a);

что не понятного ?самый простой способ:
кинуть в ясон.
затем перевести назад.
создать узел(тип тега можно получить из свойств распарсеного)
переписать ему все свойства из из распарсеного, перечислением.
-но если необходим ещё и минимальный ясон ,то и для первого пункта нужен парсер

Maxmaxmахimus 12.10.2012 12:55

Вопрос, зачем вообще понадобились такие извращения?
Проблема стоит не в том как распарсить DOM а гораздо ранее на этапе когда такая потребность ВООБЩЕ ПОЯВИЛАСЬ у тебя

macdack 12.10.2012 14:37

это простите не извращения - это я грызу гранит и пытаюсь понять логику

повторюсь ибо ответы ваши не об том чо я спрашиваю -
правильно ли я понимаю что хтмл-документ это объекты DOM и следовательно объекты JS-программы
и возможно полностью прочитать все элементы объекта document в виде пар ключ-значение и сохранить эти данные, и обратно прочитать эти данные и воссоздать первоначальный документ

вопрос наверное к профессорам типа автора учебника этого сайта))


Часовой пояс GMT +3, время: 13:33.