Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.10.2014, 22:31
Аспирант
Отправить личное сообщение для Smike Посмотреть профиль Найти все сообщения от Smike
 
Регистрация: 01.06.2014
Сообщений: 33

javascript tabs
Всем привет. Сегодня у меня нестандартный вопрос. Я решил реализовать табы на js (впервые). Их реализацию вы можете увидеть по ссылке

http://jsfiddle.net/zenrgu38/

Но лично мне кажется, что реализация хромает. каждый раз браузер обходит элементы в цикле - не очень эффективное решение. Мне интересно ваше мнение. Большое спасибо! =)

Да, и забудем про то, что это не кроссбраузерно(getElementsByClassNam e, addEventListener and classList) ибо исправить это не такая большая проблема. Вопрос именно в реализации.

Последний раз редактировалось Smike, 27.10.2014 в 22:33.
Ответить с цитированием
  #2 (permalink)  
Старый 27.10.2014, 23:00
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

реши через делегирование событий

Сообщение от Smike
Да, и забудем про то, что это не кроссбраузерно(getElementsByClassNam e, addEventListener and classList)
забудь про некроссбраузерность
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2014, 23:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

para[0].classList.remove("hide");

Вот это явно не в цикле должно быть ) Этого вообще не должно быть. Че за дрочка - добавили класс hide - передумали, убрали класс hide ))

По клику никаких циклов уже не должно быть. Ну не нужно добавлять класс hide элементам, которые уже и так его имеют. Добавляй его только нескрытому элементу.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 27.10.2014, 23:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,372

Smike,
http://jsfiddle.net/zenrgu38/1/
Ответить с цитированием
  #5 (permalink)  
Старый 27.10.2014, 23:26
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,529

Вот и я с этого начинал велосипедить
Мои две реализации табов на jQuery
http://jsfiddle.net/vlasenkofedor/82kSU/
на чистом JS
http://jsfiddle.net/vlasenkofedor/jLprM/
Но совершенству нет предела, так что улучшайте

Последний раз редактировалось Vlasenko Fedor, 27.10.2014 в 23:30.
Ответить с цитированием
  #6 (permalink)  
Старый 28.10.2014, 04:14
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,719

Сообщение от danik.js
По клику никаких циклов уже не должно быть.
Тем не менее у профессоров все на циклах.

Отсюда вопрос. Произвольный доступ можно ведь организовать на двух сущностях - current и previous - или практически нельзя?
Ответить с цитированием
  #7 (permalink)  
Старый 28.10.2014, 06:13
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от kostyanet
current и previous - или практически нельзя?
Это всего лишь переменные. С каких пор переменные нельзя использовать практически? И причем тут произвольный доступ.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 28.10.2014, 11:31
Аспирант
Отправить личное сообщение для Smike Посмотреть профиль Найти все сообщения от Smike
 
Регистрация: 01.06.2014
Сообщений: 33

Сообщение от danik.js Посмотреть сообщение
para[0].classList.remove("hide");

Вот это явно не в цикле должно быть ) Этого вообще не должно быть. Че за дрочка - добавили класс hide - передумали, убрали класс hide ))

По клику никаких циклов уже не должно быть. Ну не нужно добавлять класс hide элементам, которые уже и так его имеют. Добавляй его только нескрытому элементу.
Нда, то что этот элемент в цикле - явная глупость =)
Ответить с цитированием
  #9 (permalink)  
Старый 28.10.2014, 11:33
Аспирант
Отправить личное сообщение для Smike Посмотреть профиль Найти все сообщения от Smike
 
Регистрация: 01.06.2014
Сообщений: 33

Сообщение от рони Посмотреть сообщение
Smike,
http://jsfiddle.net/zenrgu38/1/
Рони, не понимаю одного в этом примере.

вот ты сохраняешь в переменную old первый параграф и скрываешь его при клике на link.
как тогда скрываются другие параграфы? то есть para[1], para[2] и т.д.
Ответить с цитированием
  #10 (permalink)  
Старый 28.10.2014, 12:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,372

Smike,
в переменной old всегда находится элемент открытый в прошлый раз - перед открытием нового элемента -- элемент в old скрывается -- в него записывается новый и новый old открывается - так понятнее?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книга: JavaScript. Сильные стороны Magneto Учебные материалы 16 21.04.2013 15:28
Интерпретатор Java на JS kobezzza Оффтопик 24 11.10.2012 18:32
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34