Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   не получается пересоздать select (https://javascript.ru/forum/events/7812-ne-poluchaetsya-peresozdat-select.html)

i8th 20.02.2010 12:51

не получается пересоздать select
 
создание:

function createSelect(a) {
	with (document) {
	  var
	    newSelect;
	  var
	    i=1;
	  newSelect=createElement("select");
      if (a==0) {
	    a=1;
		newSelect.id="horSelID";
	  }
	  else {
	    a=0;
		newSelect.id="verSelID";
	  }
	  while (i<=Number(forms[0].elements[a].value)) {
		newSelect.options[newSelect.options.length] = new Option(String(i),String(i));
		i++;
	  }
             forms[1].appendChild(newSelect);
	}
  }


удаление:

function deleteSelElement(elemID) {
    with (document.forms[1]) {
	  removeChild(elemID);
	}
  }


пробовал вместо
removeChild(elemID);
elemID.parentNode.removeChild(elemID)
, а вместо .forms[1] - .all

а запускаю так:

function acceptButClick() {
	deleteSelElement(horSelID);
	deleteSelElement(verSelID);
  createSelect(0) ;
  createSelect(1) ;
  }


Результата нет - элементы остаются на странице, а новые не создаются. Если же закомментировать первые две строчки в функции acceptButClick(), то новые элементы таки создадутся. Не пойму, что не так делаю?

vk65535 20.02.2010 19:36

function removeElement(id) {
	var e = document.getElementById(id);
	if (e) e.parentNode.removeChild(e);
}

i8th 20.02.2010 20:56

в программе изменений, к сожалению, не произошло
добавил в createSelect(a) сразу перед while вывод сообщения
alert(newSelect.id);
- id он присваивает верно, сами элементы по нажатию на кнопку появляются, а удалить их уже не получается :(

vk65535 20.02.2010 22:40

function crSel(id, a) {
	var s = document.getElementById(id);
	if (s) s.parentNode.removeChild(s);
	s = document.createElement('select');
	s.id = id;
	for (var i = 1, m = Number(document.forms[0].elements[a].value) || 0; i < m; ++i)
		s.options.add(new Option(i, i));
	document.forms[1].appendChild(s);
}

function acceptButClick() {
	crSel('horSelID', 1);
	crSel('verSelID', 0);
}

i8th 20.02.2010 23:49

vk65535,
благодарю за помощь!
Вероятно, я неправильно добавлял опции в список, из-за чего его потом нельзя было удалить. К сожалению, мне пока не хватает знаний, чтоб писать такие простые вещи. Чтож, пойду продолжать свое обучение дальше. И еще раз спасибо!

vk65535 21.02.2010 01:40

Первое, что нужно сделать, - научиться пользоваться отладчиком. Тогда намного легче локализовать проблему и не нужно делать всяких alert(...). Также насчет оператора with: есть мнение, что не стоит им пользоваться
https://developer.mozilla.org/en/Cor...tatements/with
гораздо лучше временно запомнить объект в короткую переменную.


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