Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с удалением данных из <select> (https://javascript.ru/forum/misc/3239-problema-s-udaleniem-dannykh-iz-select.html)

konstantinopol 31.03.2009 16:43

Теперь понял что вы от меня пытались до меня донести.

Вопрос какой из вариантов быстрее раборает ...

AzriMan 31.03.2009 16:52

Цитата:

Сообщение от konstantinopol (Сообщение 15619)
Теперь понял что вы от меня пытались до меня донести.

Вопрос какой из вариантов быстрее раборает ...

я от вас до вас ничего не пытался донести.

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

konstantinopol 31.03.2009 17:03

Я бы сказал что вариант
document.getElementById('Bundesland').innerHTML = '';

будет выполняться быстрее. Потому, что в нем просто берётся элемент Bundesland и его содержимое приравниватся к пустому значеную(незнаю как правильно это описать). А во втором случае надо узнать величину масива и удалять каждый элемент по отдельности, а это занимает время.

Хотелось бы услышать ваше мнение.

AzriMan 31.03.2009 17:09

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

но только я внесу две поправки.

1. не путайте глаголы "приравниваться" и "присваиваться".

2. величина массива будет вычисляться каждую итерацию. вместе с удалением элемента.


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

konstantinopol 31.03.2009 17:19

Да, эти 2 момента я упустил. Впредь буду внимательнее.
Благодарю за потраченое на меня время, теперь я вроде разобрался в этой теме.

AzriMan 31.03.2009 17:23

Пожалуйста. обращайтесь еще.

Kolyaj 31.03.2009 17:26

Цитата:

Сообщение от AzriMan
BundeslandOptions = document.getElementById('Bundesland').options;
for (var i=0; i<BundeslandOptions.length; i++)
    removeElement(BundeslandOptions[i]);

А только мне кажется, что в данном случае удалится только половина элементов через одного?

ZoNT 31.03.2009 17:33

это частая ошибка при удалении... Надо использовать while

AzriMan 31.03.2009 17:53

да, совершенно верно. удалится половина элементов через одного.
был вопрос про options, я и написал для options.

потом через несколько постов внес правку:

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


но, можно и через while. по сути, через while, даже, будет быстрее :)

Kolyaj 31.03.2009 17:57

AzriMan,
он удалит options через одного.


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