Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как создать элемент из объекта (https://javascript.ru/forum/dom-window/69278-kak-sozdat-ehlement-iz-obekta.html)

serj0110 10.06.2017 20:23

Как создать элемент из объекта
 
Всем привет, возник такой вопрос, как создать элемент из данных объекта?
Примерно такой объект:
var filters = {
	0: {
		name: "name",
		type: "text",
		maxLength: 20,
		required: !0,
	}
};

Diphenyl Oxalate 10.06.2017 20:27

var elem = document.createElement("INPUT");

for (var i in filters[0]) elem.setAttribute(i, filters[i][0]);

serj0110 10.06.2017 20:34

Цитата:

var elem = document.createElement("INPUT");

for (var i in filters[0]) elem.setAttribute(i, filters[i][0]);
Спасибо больше, этот вариант тоже отличный, но мне не подходит, так как в объекте их может быть куда больше, но это была уже моя ошибка, точнее мысль выражать нужно мне)

Diphenyl Oxalate 10.06.2017 20:42

Ну тогда нужен ещё один цикл по filters:

for (var i in filters) {
  var elem = document.createElement("INPUT");
  for (var j in filters[i]) elem.setAttribute(j, filters[i][j]);
  target.appendChild(elem); // target ваш
}

serj0110 10.06.2017 20:45

Цитата:

Ну тогда нужен ещё один цикл по filters:
Абсолютно прав, примерно так и вышло)
Вот пример того что у меня получилось:
var filters = {
	1: {
		13: {
			87: {
				0: {
					name: "location",
					type: "text",
					className: "add",
					maxLength: 20,
					placeholde: "Введите город...",
					required: !0,
					text: "Местоположение *"
				}
			}
		}
	},
	2: {
	},
	3: {
	},
	4: {
	},
	5: {
	},
	6: {
	},
	7: {
	},
	8: {
	},
	9: {
	},
	10: {
	},
	11: {
	},
	12: {
	}
};

drawForm: function(_category) {
		let filter = filters;
		$.each(_category, function(i, v) {
			filter = filter[v];
		});
		let el_form = document.createElement("div");
		el_form.className = "form_data";
		$.each(filter, function(i_1, v_1) {
			let el_info = document.createElement("div");
			el_info.className = "info";
			let el_input = document.createElement("input");
			let el_div = document.createElement("div");
			el_div.className = "title";
			$.each(v_1, function(i_2, v_2) {
				if ( i_2 === "text" ) {
					el_div.innerText = v_2;
				} else {
					el_input[i_2] = v_2;
				}
			});
			el_info.append(el_div, el_input);
			el_form.append(el_info);
		});
		$(".main > form > .forums").append(el_form);
	}


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