Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удалить <option> 
:(
    Опции темы
patt
Дата 25.10.2006, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 9.11.2004
Где: Николаев

Репутация: нет
Всего: 2



Всем привет!
Задумка такая: в <select> есть <option> с текстом типа: "Выберите один из пунктов"
и нужно по событию onchange его удалять
для IE и оперы сделал:

Код

<select ONCHANGE="this.options[0].outerHTML = ''">
        <option> Please select:
        <option> data
        <option> data1
</select>


как сделать, чтоб раболало в мазилле?
PM MAIL ICQ Skype GTalk   Вверх
skyboy
Дата 25.10.2006, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



this.options[0].parentNode.removeChild(this.options[0])
PM MAIL   Вверх
SelenIT
Дата 25.10.2006, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



removeChild(options[0])


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
AKS
Дата 25.10.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



patt, чтобы при каждом событии onchange не удалять первую опцию:
Код

<select onchange="if(!this.b) this.b = this.removeChild(this.options[0])">

PM MAIL   Вверх
Nicholas_S
Дата 25.10.2006, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 19



RM, товарисчи:

selectObj.remove(optionIndex) - стандартный метод


--------------------
...все в мире относительно
PM   Вверх
SelenIT
Дата 25.10.2006, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Nicholas_S, и действительно  smile 
Спасибо!


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
AKS
Дата 26.10.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Nicholas_S, 
Цитата

RM, товарисчи

Если это относится к конструкции:
Цитата

if(!this.b) this.b = this.removeChild(this.options[0])

то объясняйте - чем один стандартный метод предпочтительней другого, не менее стандартного.
PM MAIL   Вверх
superVad
Дата 26.10.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: нет
Всего: 15



а я делал так и работало

document.form.select.options[0]=null
PM MAIL   Вверх
Nicholas_S
Дата 26.10.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 19



AKS, это примерно как вопрос "если есть динамит, зачем брать удочку"  smile Решение на твое усмотрение.


--------------------
...все в мире относительно
PM   Вверх
SelenIT
Дата 26.10.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



AKS, насколько я понимаю, встроенный метод remove интерфейса HTMLSelectElement всегда удаляет именно опции, а чайлдами селекта могут быть и OPTGROUP. В таком случае варианты с removeChild не будут работать без доработки, а метод remove - будет.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
AKS
Дата 26.10.2006, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Nicholas_S, 
SelenIT, 
создается впечатление, что вы "закрываете глаза" и не видите первый пост. 
Цитата

в <select> есть <option> с текстом типа: "Выберите один из пунктов"
и нужно по событию onchange его удалять

Я предложил простой вариант для решения конкретной задачи:
1. при первой обработке события удаляется нужный элемент.
2. в дальнейшем при обработке того же события ничего больше удаляться не будет.
3. в дополнение ко всему сохранен удаленный элемент, как св-во данного select'а. 

Причем тут "динамит", причем тут optgroup? Непонятно...
PM MAIL   Вверх
SelenIT
Дата 26.10.2006, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



AKS, мой последний пост - лишь "имховый" ответ на вопрос, 
Цитата(AKS @  26.10.2006,  10:39 Найти цитируемый пост)
чем один стандартный метод предпочтительней другого, не менее стандартного

Что данную конкретную задачу Ваш способ полностью решает, я ни в коей мере не оспариваю.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Zeroglif
Дата 26.10.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(AKS @  26.10.2006,  12:39 Найти цитируемый пост)
Причем тут "динамит", причем тут optgroup? Непонятно... 


Не боись, наши на подходе! smile 

Навскидку про remove - (1) он же, гад, ваапще не модный, старый, некрасивый, и это в наше-то прототипно-фреймворкное время, (2) плюс он ноду в отличие от removeChild про запас не возвращает, (3) он вообще ничего не возвращает, ищи потом, что он там натворил и натворил ли вообще, особенно когда удаляешь по selectedIndex, который может быть и -1, (4) исключения он нам не бросает, неизвестно попал ты с индексом в точку или нет, (5) а ежели ему вместо числа-примитива случайно подсунуть что-нибудь другое: wrapper числа или ноду какую (всё ж в жизни бывает, апшипся человек), так он не только исключение не бросит, а заодно ещё и нулевой option удалит... опять втихую...

Это сообщение отредактировал(а) Zeroglif - 26.10.2006, 14:50
PM MAIL WWW   Вверх
SelenIT
Дата 26.10.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Zeroglif, вот это да! smile и это лишь "навскидку"?
В очередной раз поражаюсь глубине Ваших познаний и неисчерпаемости парадоксов яваскрипта...
Огромное спасибо за развеивание моего заблуждения относительно надежности "старых добрых" специализированных методов!


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
patt
Дата 26.10.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 9.11.2004
Где: Николаев

Репутация: нет
Всего: 2



Всем огромное спаимбо, AKSу, отдельное: вставил - всё работает.... красота smile , даже думать не пришлось  smile 

Это сообщение отредактировал(а) patt - 26.10.2006, 17:42
PM MAIL ICQ Skype GTalk   Вверх
Nicholas_S
Дата 26.10.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 19



Zeroglif, здается мне, что у вас паранойя. smile С таким подходом лучше вообще за клаву на садиться. Вдруг пальнет кнопкой в лоб! smile

Добавлено @ 19:39 
patt, "даже думать не пришлось" - в том и проблема, что думать не пришлось самому... и это расхолаживает.


--------------------
...все в мире относительно
PM   Вверх
GZep
Дата 27.10.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 2
Всего: 32



Всем привет!

А все элементы как удалить из оптиуна? Пройтись циклом или есть отдельная функция?


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
AKS
Дата 27.10.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Проверьте вот так:
Код

 <select onclick='this.length = 0'>

PM MAIL   Вверх
SelenIT
Дата 27.10.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



AKS, может быть, this.options.length? Или я опять пропустил что-то очень существенное?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
AKS
Дата 27.10.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



SelenIT, 
Цитата

пропустил что-то очень существенное

Не более, чем когда Вы писали:
Цитата

 <select onchange="location=value"> 

  ;)
PM MAIL   Вверх
SelenIT
Дата 27.10.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



AKS, намек понял ;)

вот так, казалось бы, обыкновенный селект может за два дня полностью перевернуть картину мира... :)

Правда, там есть странное замечание
Цитата
This property ... can raise an object that implements DOMException interface on setting.

Буду крайне благодарен за разъяснения и по этому вопросу.

PM MAIL   Вверх
Nicholas_S
Дата 27.10.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 19



Эх, понеслась! GZep, вот так:

Код

  
  function eraseOptions(selObj)
  {
      var newSel = document.createElement('SELECT');
      selObj.replaceNode(newSel);
  }



smile


--------------------
...все в мире относительно
PM   Вверх
AKS
Дата 27.10.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



SelenIT, 
Цитата

Буду крайне благодарен за разъяснения и по этому вопросу. 

С одной стороны - я не еще не "дорос" до той отметки, когда мог бы давать разъяснения (чаще я сам обращаюсь за ними). 
С другой стороны - а что там разъяснять? Вы пишите: "странное замечание". Что странного в том, что св-во (length) при неправильном к себе обращении имеет право "возмутиться" и, как выражается уважаемый Zeroglif, может бросить нам исключение (сообщение об ошибке)? Хотя еще и не сразу придумаешь, как его заставить это сделать...
PM MAIL   Вверх
SelenIT
Дата 27.10.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



AKS, виноват, вместо "странное" я должен был написать "для меня неочевидное". Меня интересовали именно условия, при которых попытка установить значение length считается "неправильной" именно с точки зрения DOM (насколько я понимаю имя типа объекта-исключения) - в случае несоответствия типов и т.п. все (на первый взгляд) очевидно...

P.S. 
Цитата(AKS @  27.10.2006,  17:55 Найти цитируемый пост)
...я не еще не "дорос"...
Скромность - это, конечно, хорошо... но тоже в разумных пределах smile 




--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
AKS
Дата 27.10.2006, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



SelenIT, 
Цитата

условия, при которых попытка установить значение length считается "неправильной"

Ну там написано "This property is a Number", и, видимо, что-то другое и должно считаться ошибочным...


PM MAIL   Вверх
GZep
Дата 27.10.2006, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 2
Всего: 32



Цитата(Nicholas_S @ 27.10.2006,  17:40)
Эх, понеслась! GZep, вот так:

Код

  
  function eraseOptions(selObj)
  {
      var newSel = document.createElement('SELECT');
      selObj.replaceNode(newSel);
  }



smile

Эээ...Уважаемый, Nicholas_S, может я не очень шарю, но по-моему там создается select... А мне надо, чтоб при мзменении (допустим, радио "батона") в списке удалились все "оптиуны", а потом туда уже циклом(сам могу сделать smile ) запихнулись совсем другие "оптиуны"... Во, замудрил как... smile 


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
skyboy
Дата 27.10.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



GZep, он вместо старого селекта с элементами-опциями впихивает вновь созданный(и потому - пустой) селект. метод радикальный, но вполне рабочий.
попробовал бы smile
PM MAIL   Вверх
SelenIT
Дата 27.10.2006, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



AKS, если только дело только в типе - тогда понятно. Хотя, по моим интуитивным представлениям (которые срочно надо менять:) в таком случае был бы TypeError Exception, а у DOMException есть какая-то дополнительная специфика...

PM MAIL   Вверх
Nicholas_S
Дата 27.10.2006, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 19



skyboy, grazie! smile 
GZep, а если серьезно, то используя цикл:

Код

  while (selObj.options.length)
      selObj.remove(0);



--------------------
...все в мире относительно
PM   Вверх
AKS
Дата 27.10.2006, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



SelenIT, 
Цитата

по моим интуитивным представлениям 

А у меня и таких нет на этот счет. Я ведь сразу признался - ну не могу я давать разъяснений, по крайней мере в данном случае. Сам не меньше Вас хотел бы узнать, о чем там речь, чтоб "от и до", как говорится...
PM MAIL   Вверх
Nicholas_S
Дата 27.10.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 19



AKS, дословно: "Это свойство является числом (т.е. number) и при установке может вызвать объект, включающий в себя интерфейс DOMException".
Другими словами, это свойство является обычным числом, а не объектом, так что никаких дополнительных действий совершать не будет при установке, поэтому если, например, указать в качестве значения -1, но результат будет предсказуемым. То же самое относится и к свойству select.options.length. Вообщем, все-таки пользоваться универсальными методами предпочтительнее, как то remove() и removeChild(), однако, как уже было замечено, второй метод предполагает отсутствие групп (optGroups) в select'е.



--------------------
...все в мире относительно
PM   Вверх
GZep
Дата 30.10.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 2
Всего: 32



Извините, что надоедаю, проблему решил, просто непонятно, цикл - это лучше? Если "да", то чем? Мне просто интересно как сделать правильно...

и еще...

Что такое
options.add(new Option(ЭТО, ЭТО, ЭТО, И ЭТО));???????

Это сообщение отредактировал(а) GZep - 30.10.2006, 17:44


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0839 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.