2014-10-21 6 views
0

У меня есть файл javascript, который я использую, чтобы выровнять один абсолютный div, чтобы всегда быть встроенным в горизонтальное положение прокрутки.onscroll только срабатывает один раз

Я не могу понять, что не работает с моим кодом - onscroll, кажется, срабатывает один раз, а затем никогда не запускается снова в Internet Explorer и Firefox.

У кого-нибудь есть идеи? Я искал это немного, и я не могу понять ошибку. (Я пробовал и onscroll + = и onscroll =, ни работать). Это смещение 39 только для того, чтобы убедиться, что сценарий выстрелил, пока я не получу его на работу.

window.onload=scrollSet; 
 

 
function scrollSet(){ 
 
\t window.onscroll += KeepLeftAtScroll(); 
 
} 
 

 

 
function KeepLeftAtScroll(){ 
 
\t var ele=document.getElementById("topAboveMenuMargin"); 
 
\t if (ele != null){ 
 
\t \t ele.style.left = 39+ document.documentElement.scrollLeft; 
 
\t } 
 
\t \t 
 
}

+0

Почему вы нарушаете собственный 'window.onscroll'? 'KeepLeftAtScroll' ничего не возвращает. – Teemu

+0

Я использую его для кода огня, который переустанавливает div каждый раз, когда прокручивается окно. – Charles

+0

Нет, вы переопределяете 'window.onscroll'' NaN', который ничего не запускает;). 'onscroll' должен быть функцией. Вероятно, 'window.onscroll = KeepLeftAtScroll;' делает то, что вы хотите. – Teemu

ответ

0

Исправлена ​​проблема. По-видимому Javascript не нравится отделяя и присваивания декларации, а

window.onscroll = function KeepLeftAtScroll(){ 
 
\t var ele=document.getElementById("topAboveMenuMargin"); 
 
\t if (ele != null) 
 
\t { 
 
\t \t ele.style.left = window.pageXOffset; 
 
\t } 
 
}

работ и делает то, что я хочу его. Кажется, это не похоже на «window.onscroll = KLAS()», но было в порядке с «window.onscroll = function KLAS() {}». Я изначально выполнял часть onload, так как я первоначально не проверял значение null на моем элементе и сделал это таким образом, чтобы обойти эту проблему.

В любом случае, похоже решение. Спасибо всем за помощь.

+0

Хммм ... Это исправляет проблему. Хотя 'window.onscroll = KeepLeftAtScroll;' также выполнил бы эту работу. Вы знаете, есть разница между вызовом функции и ссылкой на функцию? – Teemu

+0

Да. В тот вечер у меня была тонна странных проблем, и по какой-то причине window.onscroll = KLAT; не работал, пока я не объединил декларацию и назначение. Я не знаю, что это, но я попробовал еще раз и проверки его "window.onscroll = KeepLeftAtSroll; функция KeepLeftAtScroll() {-code- }" терпит неудачу. – Charles

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