Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Добавление нового поля фомы (https://javascript.ru/forum/events/6437-dobavlenie-novogo-polya-fomy.html)

andrew123 27.11.2009 16:39

Добавление нового поля фомы
 
Помогите, плиз
при нажатиии на кнопку добавляется новое поле формы, но для поля select надо, что бы все елементы option добавлялись тоже.

Есть такой код:
function addSelect(id) {
var div = document.createElement("div");
div.innerHTML = "<select id=\"" + id + "\"></select>";
document.getElementById(id).appendChild(div);
}

Как добавить option елмента?

subzey 27.11.2009 19:02

Эт-то...
Ну, если уж используете функции манипуляции DOM, используйте их до конца.
function addSelect(id) {
	var div = document.createElement("div");
	var select = document.createElement("select");
	div.appendChild(select);
	var myOptions = ["рыба", "мясо", "молоко", "вино", "водка", "яйца", "мыло"];
	for (var i=0; i<myOptions.length; i++){
		var option = document.createElement("option");
		option.value = i;
		option.innerHTML = myOptions[i];
		select.appendChild(option);
	}
	document.getElementById(id).appendChild(div);
}


Кстати, в Вашем коде после вставки селекта в документ, в документе же будут дублирующиеся id.

andrew123 27.11.2009 19:57

В таком случае как удалять созданные обьекты select? Я пробую так, но не получается

function addField(id) {
var div = $("#" + id + "s");
var selectId = $("#" + id);

var mydiv = document.createElement("div");
newSelect = $(selectId).clone(true);

mydiv.innerHTML = newSelect + "<input type=\"button\" value=\"-\" onclick=\"return deleteField(this)\" class=\"removeItem\" /><input type=\"button\" value=\"+\" onclick='return addField(\"" + id + "\")' class=\"addItem\" />";

$(div).append(mydiv);

}


Вместо копии Selecta в браузере выдае [objectObject]
Как исправить

subzey 27.11.2009 22:41

У Вас каша в коде, Вы пытаетесь сложить объект со строкой.
Совет: абстрагируйтесь от html'ного представления тегов, работайте с ними исключительно как с объектами. И все получится.


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