Javascript управление прокруткой SELECT - PullRequest
3 голосов
/ 17 декабря 2010

Во-первых, я не эксперт по Javascript.Я хотел бы добавить функцию в поле SELECT, которое я использую, который автоматически прокручивается до конца при добавлении нового элемента, но только если пользователь не прокрутил вверх.

В основном, когда пользовательпросматривая старые записи, я не хочу, чтобы вновь прибывшие привязывали позицию к концу списка выбора.Тем не менее, если пользователь прокручивает страницу вниз, используя полосу прокрутки, автоматически появляются новые поступления.

Вот что у меня есть

<script type="text/javascript">
  function AddItem(s) 
  {
    document.getElementById('content').add(new Option(s));
    // Scroll to end - cant remember why I am using this pair of commands :)
    document.getElementById('content').selectedIndex = document.getElementById('content').length - 1;
    document.getElementById('content').selectedIndex = document.getElementById('content').length + 1;
  }
</script>

Я ожидаюнеобходимо выполнить тест, чтобы увидеть, если последний, но один элемент виден.Если это так, мы внизу и должны выполнить автопрокрутку.Это правильно?

Спасибо JS Masters

Саймон

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Полоса прокрутки в окне выбора недоступна через javascript, поэтому я не думаю, что вы сможете это сделать.

related: Высота поля выбора HTML (раскрывающийся список)

Вы можете видеть, какие элементы выбраны, и изменять выбор, но я не думаю, что есть какой-либо способ определить, какие элементы видны.

0 голосов
/ 17 декабря 2010

Как заметил @bemace, JavaScript не предоставляет доступ для прокрутки поля выбора.Лучшее, что вы можете сделать, это «предварительно выбрать» элемент ... который, если это стиль выбора «выпадающий», должен показывать эту опцию.

например

<script type="text/javascript">
  function AddItem(s){
    var mySelect = document.getElementById('content');
    mySelect.add(new Option(s));
    mySelect.selectedIndex = mySelect.options.length - 1;
  }
</script>

ЭтоСледует отметить, что если у вас есть 30 вариантов выбора, а для атрибута size установлено значение 10 (например, он отображается в виде списка, а не раскрывающегося списка), тогда, когда вы «выбираете» новый (*Опция 1008 *), список не обязательно будет прокручиваться, чтобы показать эту запись

...