Cannot set property 'position' of undefined

dreamteck

Registered
Провет! Имам един проблем при използването на jQuery.

Следният код:

[js]google.load("jquery", "1");
function make_sticky() {
var window_top = $(window).scrollTop();
var div_top = $("#headeranchor").offset().top;
if (window_top > div_top){
$("#header").style.position = "relative";
$("#header").style.top = "0px";
$("#header").style.z-index = "10000";
}
else
$("#header").style.position = "static";
}

google.setOnLoadCallback(function() {
$(window).scroll(make_sticky);
make_sticky();
});[/js]

Ми дава грешката от заглавието. Не разбирам защо става така. Имам си два DIV тага с ID "header" и "headeranchor". Някой може ли да даде идея защо става така ?
Благодаря предварително!
 
Ми нормално е да ти даде тази грешка.

Виж че тая функция я викаш веднага. Откъде си сигурен че тия елементи въобще съществуват и че документа се е заредил?! Всеки новак знае, че джаваскрипта ще се изпълни веднага щом се извика, дори и страницата да не се е заредила напълно.

Сложи го в

[js]$(document).ready(function(){....});[/js]
 
Аз съм го сложил в scroll. Мога и физически да изчакам страницата да се зареди и да скролвам - при всяко изместване на позицията на страницата, тази функция ще се изпълнява. И в ready да го сложа - пак я има тази грешка.

[js]function make_sticky() {
var window_top = $(window).scrollTop();
var div_top = $("#headeranchor").offset().top;
if (window_top > div_top){
$("#header").css("position: fixed; top: 0px; z-index: 10000;");
}
else
$("#header").css("position: static; z-index: auto;");
}[/js]

По този начин стана и грешките се махнаха, но когато скролвам страницата, нищо не се променя. Сложих един alert да видим какво не е наред - if statement-а си се изпълнява нормално, но CSS правилата на въпросният елемент с ID hader не се променят.
 
Battleman каза:
Пробвай така + document.ready
[css].css({'position': 'fixed', 'top': '0px', 'z-index' : '10000'})[/css]

Супер! Благодаря ти! Точно в това ми се е коренил проблемът!
 

Back
Горе