Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.03.2009, 14:20
Аспирант
Отправить личное сообщение для konstantinopol Посмотреть профиль Найти все сообщения от konstantinopol
 
Регистрация: 11.03.2009
Сообщений: 83

Проблема с удалением данных из <select>
Есть
Код:
<td><select name="Bundesland" id="Bundesland">
				<option>Alle</option>
     				</select>
			</td>
и функция в которой вписываются значения в select
Код:
function box(region){
	for(h=0;h<region.length;h++){	
		abc=document.createElement('option');
		abc.innerHTML=region[h]; 
		document.getElementById('Bundesland').appendChild(abc);
	}
}
Но когда вызывается функция все предыдущие значения в select должны быть удалены. Я пробовал это с
document.getElementById('Bundesland').removeChild('option');

(вызываетса перед for)
но ничего не вышло. В чем я ошибся??
Ответить с цитированием
  #2 (permalink)  
Старый 31.03.2009, 14:24
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

removeChild принимает ссылку на удаляемый элемент.
Ответить с цитированием
  #3 (permalink)  
Старый 31.03.2009, 14:35
Аспирант
Отправить личное сообщение для konstantinopol Посмотреть профиль Найти все сообщения от konstantinopol
 
Регистрация: 11.03.2009
Сообщений: 83

Что бы это значило??
Ну я и хочу удалить все option из select. Что совсем другое надо брать??
Или я неправильно понял функциональность removeChild ...
Ответить с цитированием
  #4 (permalink)  
Старый 31.03.2009, 14:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Строка не может являться ссылкой на элемент.
Ответить с цитированием
  #5 (permalink)  
Старый 31.03.2009, 14:48
Аспирант
Отправить личное сообщение для konstantinopol Посмотреть профиль Найти все сообщения от konstantinopol
 
Регистрация: 11.03.2009
Сообщений: 83

Либо я туплю либо ты что то не договариваешь.
Я немного потестировал и понял что так не пойдет как я писал в самом начале.
Но я не понимаю как мне отчистить select. Чёрт с ним с removeChild, можно ли это сделать другим способом???
Ответить с цитированием
  #6 (permalink)  
Старый 31.03.2009, 14:58
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

document.getElementById('Bundesland').innerHTML = '';
Ответить с цитированием
  #7 (permalink)  
Старый 31.03.2009, 15:01
Аспирант
Отправить личное сообщение для konstantinopol Посмотреть профиль Найти все сообщения от konstantinopol
 
Регистрация: 11.03.2009
Сообщений: 83

Супер, спасибо тебе большое

"Вы должны добавить отзыв кому-то ещё, прежде чем сможете снова добавить его Kolyaj."
Ответить с цитированием
  #8 (permalink)  
Старый 31.03.2009, 15:31
Профессор
Отправить личное сообщение для AzriMan Посмотреть профиль Найти все сообщения от AzriMan
 
Регистрация: 27.02.2009
Сообщений: 215

несомненно,
document.getElementById('Bundesland').innerHTML = '';
будет проще всего. я бы сделал аналогично

а по поводу вопроса. что вы пытаетесь сделать этой строчкой?
document.getElementById('Bundesland').removeChild('option');

я догадываюсь что, поэтому более корректный код ниже. но мне любопытно услышать ответ в любом случае.


function removeElement(element)
{
	element.parentNode.removeChild(element);
	return true;
}

BundeslandOptions = document.getElementById('Bundesland').options;
for (var i=0; i<BundeslandOptions.length; i++)
	removeElement(BundeslandOptions[i]);




--edited.
(продублирую и в этом посте)
приведенный выше код будет производить очистку не до конца , если в селекте будет что-то еще кроме options.
для действительно полной очистки нужно проходиться по всем
document.getElementById('Bundesland').childNodes



--edited x2.
спасибо всем за поправки. приведенный выше код удалит элементы 'options' через одного. для полного удаления нужно воспользоваться циклом while.

Последний раз редактировалось AzriMan, 31.03.2009 в 18:07.
Ответить с цитированием
  #9 (permalink)  
Старый 31.03.2009, 16:18
Аспирант
Отправить личное сообщение для konstantinopol Посмотреть профиль Найти все сообщения от konstantinopol
 
Регистрация: 11.03.2009
Сообщений: 83

Да это тоже можно сделать, просто я незнаю сколько элементов стояло в select до того как я внес туда новые значения. Поэтому сделал так как предложзил Kolyaj.
document.getElementById('Bundesland').removeChild('option');

Этой строкой я пытался очистить select
Ответить с цитированием
  #10 (permalink)  
Старый 31.03.2009, 16:25
Профессор
Отправить личное сообщение для AzriMan Посмотреть профиль Найти все сообщения от AzriMan
 
Регистрация: 27.02.2009
Сообщений: 215

мне без разницы как вы сделали.
у элемента Bundesland нет элемента option!!! у него есть массив с элементами option. поэтому нужно проходиться циклом по каждому элементу, т.к.
Сообщение от Kolyaj Посмотреть сообщение
removeChild принимает ссылку на УДАЛЯЕМЫЙ элемент.
понимаете/нет? ключевое слово - У-ДА-ЛЯ-Е-МЫЙ.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47
Синхронный запрос данных по AJAX Shasoft AJAX и COMET 2 03.03.2009 14:07
Хранимая область данных. PolarWolf Общие вопросы Javascript 17 14.01.2009 18:25
Проблема с возвращением данных с сервера IgorN Общие вопросы Javascript 2 26.11.2008 13:58
Сохранение данных на стороне клиента средствами Javascript baal1988 Events/DOM/Window 4 24.08.2008 21:32