Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.05.2010, 15:04
Аспирант
Отправить личное сообщение для Polkan Посмотреть профиль Найти все сообщения от Polkan
 
Регистрация: 30.04.2010
Сообщений: 49

массив options для select (в IE)
Добрый день.
Подскажите, пожалуйста, почему IE не понимает массив options для элемента select?
Во всех остальных браузерах код работает правильно.
function remake(){
  formEl=d.getElementById('boxname');
    for(var j in formEl.options) {
      formEl.options[j].disabled=true;
    }
  }

IE пишет "объект не поддерживает это свойство или метод" и ставит указатель в начало строки formEl.options[j].disabled=true;

Что делать?
Как все-таки добраться до элементов списка?

Полный код:
Код:
<html>
<head></head>
<body>

  <script type="text/javascript">
  var d = document;

  function remake(){
  formEl=d.getElementById('boxname');
    for(var j in formEl.options) {
      formEl.options[j].disabled=true;
    }
  }
  </script>

<form id="filterform">
<select name="imyaboksa" id="boxname" >
        <option value=''>не важно</option>
        <option value="1" id="id1">field1</option>
        <option value="2" id="id2">field2</option>
        <option value="3" id="id3">field3</option>
</select>
</form>

<br /><br /><br /><br />
<a href="#" onclick="remake();">disable</a>

</body></html>
Ответить с цитированием
  #2 (permalink)  
Старый 06.05.2010, 15:14
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

В IE нет такого свойства у option (disabled).

А почему бы просто не скрывать элементы списка?

Или disabled делать к select, если это возможно.

Так же вот немного инфы по этому.
__________________
.

Последний раз редактировалось Skipp, 06.05.2010 в 15:19.
Ответить с цитированием
  #3 (permalink)  
Старый 06.05.2010, 15:26
Аспирант
Отправить личное сообщение для Polkan Посмотреть профиль Найти все сообщения от Polkan
 
Регистрация: 30.04.2010
Сообщений: 49

Весь список-то делать неактивным не нужно. Именно, что какие-то из элементов должны остаться активными, а какие-то - нет.
В принципе не критично, можно и скрывать вместо того, чтобы делать неактивными, однако и такой вариант не проходит.
Заменив
formEl.options[j].disabled=true;

На
formEl.options[j].style.display='none';

Получаю ответ:
Код:
Сообщение: 'formEl.options[...].style' -  есть null или не является объектом
P.S. опять же, проблема только в IE
P.P.S спасибо за ссылку

Последний раз редактировалось Polkan, 06.05.2010 в 15:33.
Ответить с цитированием
  #4 (permalink)  
Старый 06.05.2010, 15:56
Аспирант
Отправить личное сообщение для Polkan Посмотреть профиль Найти все сообщения от Polkan
 
Регистрация: 30.04.2010
Сообщений: 49

Кстати, что интересно...
свойство disabled-то в целом работает.
Если получать по id именно <option>, то оно вполне себе становится неактивным. Т.е. проблема возникает именно в момент попытки использовать массив options

<html>
<head></head>
<body>

  <script type="text/javascript">
  var d = document;

  function test(){
  formEl=d.getElementById('id2');
    formEl.disabled=true;
  }
  </script>

<form id="filterform">
<select name="imyaboksa" id="boxname" >
        <option value=''>не важно</option>
        <option value="1" id="id1">field1</option>
        <option value="2" id="id2">field2</option>
        <option value="3" id="id3">field3</option>
</select>
</form>

<br /><br /><br /><br />
<a href="#" onclick="test();">test</a>

</body></html>
Ответить с цитированием
  #5 (permalink)  
Старый 06.05.2010, 16:01
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

А ты проверял в ie ниже 8? там не работает
__________________
.
Ответить с цитированием
  #6 (permalink)  
Старый 06.05.2010, 16:30
Аспирант
Отправить личное сообщение для Polkan Посмотреть профиль Найти все сообщения от Polkan
 
Регистрация: 30.04.2010
Сообщений: 49

и правда не работает
Ответить с цитированием
  #7 (permalink)  
Старый 06.05.2010, 16:38
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Извлекайте ненужные элементы из select
http://webmaster.ee/javascript/JavaScript/options.html
Ответить с цитированием
  #8 (permalink)  
Старый 06.05.2010, 17:25
Аспирант
Отправить личное сообщение для Polkan Посмотреть профиль Найти все сообщения от Polkan
 
Регистрация: 30.04.2010
Сообщений: 49

Octane,
Remove(), это, конечно хорошо. Проблема в том, что их потом надо как-то возвращать обратно. Add() - слишком громоздко для такой мелкой задачи.
Ответить с цитированием
  #9 (permalink)  
Старый 06.05.2010, 17:31
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Что там громоздкого? Храните ссылки на все option в массиве и когда нужно удаляйте все, и добавляйте только нужные.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
эмуляция события click для элемента select Polo Events/DOM/Window 4 16.12.2009 13:29
select разный стиль для options Mary Элементы интерфейса 3 31.10.2009 12:57
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Передача всех Options из Select (не только выбранных) dm1tr1y Общие вопросы Javascript 6 23.03.2009 18:51