Javascript.RU

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

Рубрикатор по алфавиту
Добрый день, коллеги.
Помогите решить задачку.

На страницу выводится список неких объектов в алфавитном порядке. Допустим, растений. И алфавитный указатель, в котором буквы, для которых на странице есть растения, оформлены ссылками, а остальные - просто текст.
Вопрос в том, какой на эти ссылки прикрепить код, чтобы по клику на них скрывались все растения, кроме начинающихся на эту букву.

Вот пример.
На страничке есть Арбуз, Алыча, Слива, Яблоко.
Соответственно, в указателе ссылками являются А, С, Я. По клику на А на страничке должны остаться только Арбуз и Алыча, всё остальное должно скрыться.

По идее, это не так сложно, но никак не соображу, как это сделать.
Ответить с цитированием
  #2 (permalink)  
Старый 24.05.2016, 11:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

MAzZYBiG,
можно html, а ещё лучше обьект с данными.
Ответить с цитированием
  #3 (permalink)  
Старый 25.05.2016, 20:47
Интересующийся
Отправить личное сообщение для MAzZYBiG Посмотреть профиль Найти все сообщения от MAzZYBiG
 
Регистрация: 07.03.2013
Сообщений: 16

Не очень понял.

Может есть какие-нибудь более-менее готовые варианты? А то поиском тяжело такое искать
Ответить с цитированием
  #4 (permalink)  
Старый 25.05.2016, 21:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

MAzZYBiG,
скажем это обьект
{"А" : ["Арбуз","Алыча"], "С" : ["Слива"]}

или как оно у вас и обьект и html
Ответить с цитированием
  #5 (permalink)  
Старый 25.05.2016, 23:44
Профессор
Отправить личное сообщение для Царь Леонид Посмотреть профиль Найти все сообщения от Царь Леонид
 
Регистрация: 22.08.2013
Сообщений: 217

Если у вас данные представлены, как показал Рони, то вот так примерно (можно и покороче, но лень думать)
var data = {"А" : ["Арбуз","Алыча"], "С" : ["Слива"], "В" : ["Виноград", "Вишня"]};

function displayData(data){
  var body = document.body;
  for(var val in data){
     var span = document.createElement('span');
     span.innerHTML = val
     span.className = "selected"
     body.appendChild(span)
  }
}

function filterData(el){
  var r = document.getElementById('result')
  var arr = [];
    for(i in data) {
      i == el? arr.push(data[i]):'';
    }
  var e = arr.join(', ')
  r.innerHTML = e
}

displayData(data)
var clicked = document.querySelectorAll('.selected');

for(var i = 0; i<clicked.length; i++){
  clicked[i].addEventListener('click', function(event){
    filterData.call(null, event.target.innerHTML)
  })
}

=======================================
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<div id="result"></div>
</body>
</html>


Вот ссылка на песочницу

Последний раз редактировалось Царь Леонид, 26.05.2016 в 00:11.
Ответить с цитированием
  #6 (permalink)  
Старый 26.05.2016, 09:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от рони
а ещё лучше обьект с данными
Почему? По идее списки уже приходят сортированные по алфавиту, и если скрытые, то проще показать связанное или я чего-то не дополнял?
Ответить с цитированием
  #7 (permalink)  
Старый 26.05.2016, 10:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

laimas,
а как узнать что скрывать? парсить какую-то data или выборку по классу икс делать? нужно же знать связанное или как то связать, от чего плясать-то ?
Ответить с цитированием
  #8 (permalink)  
Старый 26.05.2016, 10:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ну а как табуляторы, аккордеоны работают? Раскрывается же связанное с кнопкой и проблем нет. Я так думаю, что уж если списки и нужен рубрикатор, то это уже сортировано по алфавиту, а связать списки с литерами не проблема.
Ответить с цитированием
  #9 (permalink)  
Старый 26.05.2016, 11:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

laimas,
данные проще брать из готового обьекта, то что ты пишешь я не понимаю, извини, или понимаю как опять парсить что-то.
Ответить с цитированием
  #10 (permalink)  
Старый 26.05.2016, 11:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

рони, если клиент сам готовит списки, то да, но если списки отдает сервер, ну что сложного связать их с литерами. Пусть речь об UTF, код А = 1040, щелкнули по литере А, получили ее код, показали список, например list + А.charCodeAt.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка двумерного массива по алфавиту Live it Общие вопросы Javascript 4 17.11.2014 14:21
Сортировка таблицы по алфавиту dozer Events/DOM/Window 6 18.10.2014 00:22
Скрипт составления списка ссылок и их сортировка по алфавиту Друг Работа 13 30.10.2010 16:56
Сравнение строк по алфавиту Alex VoDevil Общие вопросы Javascript 6 25.02.2010 02:04
сортировка по алфавиту mixa Общие вопросы Javascript 12 20.08.2008 03:24