Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.11.2014, 10:27
Новичок на форуме
Отправить личное сообщение для alekseylovchikov Посмотреть профиль Найти все сообщения от alekseylovchikov
 
Регистрация: 31.08.2012
Сообщений: 3

Выборка по className, проблема в Firefox
Приветствую! Столкнулся с такой проблемой, значит я делаю выборку всех элементов по определенному классу.

var getSection = document.getElementsByClassName('className');


потом в массив

for(var idSection in getSection) {
    categoryList[i] = idSection;
    i++;
}


И дальше происходит, то что я не понимаю.

В браузерах IE, Chrome, Opera выводит нужные мне идентификаторы в этих классах, а вот в Firefox их почему то нет. В чем проблема?

Последний раз редактировалось alekseylovchikov, 20.11.2014 в 10:31.
Ответить с цитированием
  #2 (permalink)  
Старый 20.11.2014, 10:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,134

Сообщение от alekseylovchikov
В чем проблема?
Вот тут бы и тестовый пример непомешал бы...
Ответить с цитированием
  #3 (permalink)  
Старый 20.11.2014, 10:40
Новичок на форуме
Отправить личное сообщение для alekseylovchikov Посмотреть профиль Найти все сообщения от alekseylovchikov
 
Регистрация: 31.08.2012
Сообщений: 3

Сообщение от ksa Посмотреть сообщение
Вот тут бы и тестовый пример непомешал бы...
http://webdevshow.hol.es/test.html
Вывод в console.log

В Chrome, например, видно вывод id category1, category2, category3, в то время как в Fiefox их нет.
Ответить с цитированием
  #4 (permalink)  
Старый 20.11.2014, 10:55
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от alekseylovchikov
for(var idSection in getSection)
Это нельзя использовать для обхода массива и массивоподобных объектов
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 20.11.2014, 11:04
Новичок на форуме
Отправить личное сообщение для alekseylovchikov Посмотреть профиль Найти все сообщения от alekseylovchikov
 
Регистрация: 31.08.2012
Сообщений: 3

Сообщение от danik.js Посмотреть сообщение
Это нельзя использовать для обхода массива и массивоподобных объектов
Спасибо! Переделал.

Последний раз редактировалось alekseylovchikov, 20.11.2014 в 11:09.
Ответить с цитированием
  #6 (permalink)  
Старый 20.11.2014, 21:09
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Наоборот. Это можно использовать, когда вы знаете что это можно использовать. Например сами объект сделали - сами знаете что в прототипы никто не наклал, - значит можно. В остальных случаях обход пней и корят зохавает краткость такого loop'а в два счета.
Ответить с цитированием
  #7 (permalink)  
Старый 21.11.2014, 10:39
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от kostyanet
Наоборот. Это можно использовать
Я бы сказал разрешено при необходимости. Причины ясны, если нужно перебрать массив в котором есть добавленные вами свойства которые так же нужно обработать. В иных случаях для массива и других коллекций все же более рекомендуется использовать loop с индексом for(var i =0; i < arr.length; i++), одна из важных причин это производительность, она по индексу будет в разы лучшее, нежели перебор хешей в объекте.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 21.11.2014, 10:44
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от alekseylovchikov
for(var idSection in getSection) {
    categoryList[i] = idSection;
    i++;
}
В твоем же случае перевод HTML-коллекции в массив можно осуществить более простым способом:
categoryList = Array.prototype.slice.call(getSection);
но это не будет работать в ИЕ8
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #9 (permalink)  
Старый 21.11.2014, 14:08
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от devote
более простым способом
Array.apply(null, getSection) ... ммм?
IE8+
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 21.11.2014, 14:34
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от danik.js
Array.apply(null, getSection) ... ммм?
во точно, и в ИЕ8 работает)))
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с меню на JS в Firefox MaxPayne Элементы интерфейса 0 24.10.2013 14:32
Проблема с обработкой событий мыши firefox АлексТраст Элементы интерфейса 7 09.07.2012 16:42
Проблема с ЯваСкрипт в Mozilla Firefox 3 ScarHead Firefox/Mozilla 8 30.06.2009 16:55
Проблема закрытия окна (window.close()) в Mozilla и FireFox Гость AJAX и COMET 4 06.11.2008 19:22
Специфичная проблема в firefox Ufai Rock Общие вопросы Javascript 1 23.10.2008 16:55