2009-04-06 3 views
1

У меня есть набор функций Javascript, которые я использую с таблицей элементов ввода, чтобы включить навигацию. Такие вещи, как отслеживание текущего сфокусированного элемента и переполнение от конца одной строки до начала следующего. У меня есть поддержка полосы прокрутки с фиксированным первым столбцом, создав одну таблицу шириной всего один столбец в качестве фиксированного столбца и имеющую полосу прокрутки для другой таблицы.Принудительное позиционирование прокрутки с помощью Javascript scrollLeft

Тем не менее, я недавно заметил, что поведение прокрутки по умолчанию немного неполноценно. Когда я перехожу к последнему столбцу, Firefox оставляет этот столбец частично затененным полосой прокрутки, а не прокруткой достаточно далеко, чтобы увидеть ее. Точно так же, как только я прокручу, чтобы увидеть вторую часть последнего столбца, когда я перехожу к следующей строке, а навигационный код устанавливает фокус на ячейку в первом столбце (замороженная таблица), Firefox не изменяется полосу прокрутки, чтобы я мог видеть весь первый столбец.

Из-за этого я изучил, как изменить позиционирование прокрутки, используя javascript. В моей таблице нет вертикальной полосы прокрутки, только горизонтальной. Поэтому я наткнулся на scrollLeft.

document.getElementById("meastable").scrollLeft = 1; // reset scroll to leftmost 

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

Я также установил scrollLeft на большое число, поэтому оно будет установлено максимально, как описано в документации, и это также не работает (за исключением одного раза в то время).

Я использую следующий код, чтобы настроить полосу прокрутки моей таблицей.

<div style="overflow:auto"> 
<table id="meastable" border="1"> 

Согласно документации Mozilla, это похоже на то, что было создано в IE, но теперь работает в Firefox. На самом деле это не работает в Firefox, поскольку проект для этого проекта будет только Firefox.

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

+0

haha ​​... Я читал идентификатор как «мясной», – Jason

ответ

7

Содержащий элемент div - это элемент с переполнением. Вам нужно установить scrollLeft из div, а не таблицы.

Смежные вопросы