[JavaScript][Трабла] Ошибка с insertBefore в Firefox и Opera

Тема в разделе "Другие языки", создана пользователем Alexitdv, 10 май 2009.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Alexitdv

    Alexitdv

    Регистр.:
    4 янв 2008
    Сообщения:
    161
    Симпатии:
    65
    Есть вот такая функция:
    Код:
    function ToDown () {
      for (var key in document.sort.schema.options) {
         var elem = document.sort.schema;
         var val = elem.options[key];
        
         if(val.selected && key < elem.options.length-1) {
             elem.insertBefore(elem.options[key+1], val);
         }
       }
    }
    
    Выполняется она по клику на ссылку. Должна перемещать выделеные элементы списка select на индекс ниже.

    На insertBefore
    Вылетает ошибка:
    В серче поисковиков чот не чо путевого не нашел. :bc::bc:
     
  2. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Код:
    elem.insertBefore(elem.options[key+1], val);
    Похоже, передается некорректный параметр elem.options[key+1] или val, например, индекс за границами массива. Стоит глянуть хелп к этой функции контрола.
     
  3. Alexitdv

    Alexitdv

    Регистр.:
    4 янв 2008
    Сообщения:
    161
    Симпатии:
    65
    Код:
    function ToDown () {
       var elem = document.sort.schema;
    	
       var i = 0;
       
       while(i < elem.options.length) {
        var val = elem.options[i];
        
        if(val.selected && i < elem.options.length-1) {
        	elem.insertBefore(elem.options[i+1], val);
        	i++;
        }
        i++;
      }
    }
    
    Сделал так и заработало.
     
Статус темы:
Закрыта.