Javascript.RU

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

Цикл не отрабатывает до конца
Добрый день. Такая проблема. Есть таблица (ооочень большая) в которой я выводу первые 10 строк, а дальше ставлю класс
.hide_tab_pos{
display:none;
}
для всех элементов <td> таблицы (Поставить для tr не могу ввиду особенности структуры таблицы).
По нажатию на ссылку происходит событие oneclik и функция меняет для всех элементов с классом hide_tab_pos, значение display на inline.

<script type="text/javascript">
  function show_tabs() {
    var elements = document.getElementsByClassName('hide_tab_pos');
    for (i = 0; i < elements.length; i++) {
      elements[i].className = "inline";
    }
  }


.....

<a href="#" onclick="show_tabs(); return false " class="link-full-analog" >показать больше позиций</a>



Но есть такая проблема. Цикл который переберает все элементы и присваивает значения почему то не отрабатывает до конца и часть элементов остается скрытой. кто подскажет почему не отрабатывает цикл до конца? Заранее спасибо всем кто решит помочь!
Ответить с цитированием
  #2 (permalink)  
Старый 06.09.2013, 16:38
Аспирант
Отправить личное сообщение для diakon Посмотреть профиль Найти все сообщения от diakon
 
Регистрация: 28.09.2009
Сообщений: 49

Кто знает почему может быть?

Последний раз редактировалось diakon, 06.09.2013 в 16:47.
Ответить с цитированием
  #3 (permalink)  
Старый 06.09.2013, 17:08
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 2,932

Сообщение от diakon
display на inline.
Тогда это уже не таблица получается.

display: table-cell
Ответить с цитированием
  #4 (permalink)  
Старый 06.09.2013, 17:18
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

diakon,

а если так?
for (var i = elements.length-1; i >= 0; i--)
Ответить с цитированием
  #5 (permalink)  
Старый 09.09.2013, 08:10
Аспирант
Отправить личное сообщение для diakon Посмотреть профиль Найти все сообщения от diakon
 
Регистрация: 28.09.2009
Сообщений: 49

Сообщение от Яростный Меч Посмотреть сообщение
diakon,

а если так?
for (var i = elements.length-1; i >= 0; i--)
Спасибо Вам! Так заработало!
Ответить с цитированием
  #6 (permalink)  
Старый 09.09.2013, 14:18
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

diakon,

суть в том, что методы вроде getElementsByClassName возвращают не массив, а "коллекцию DOM-элементов", которая следит за документом и самостоятельно меняется, чтобы всегда быть актуальной. В твоем случае из нее выпадали элементы, у которых ты менял класс (т.к. они более не соответствовали правилам, по которым собрана коллекция).
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать чтобы цикл не запускался второй раз Brook Events/DOM/Window 5 12.05.2013 20:43
Цикл без подвисания MatrixGru jQuery 5 08.03.2013 09:21
Почему скрипт отрабатывает в IE только при первом входе на сайт? tygeddar Элементы интерфейса 3 20.09.2012 00:37
Слетает цикл each() Casufi jQuery 1 05.08.2012 15:41
Бесконечный цикл Sundro Общие вопросы Javascript 8 08.08.2011 12:58