2015-01-10 3 views
0

이렇게 짧게 만드는 방법이 있습니까?JS : 두 가지 기능을 동일한 기능으로 수행하십시오.

var scrollPos = function() { 
    var bodyTopPos = 
     header.style.top < 
     (document.body.scrollTop || document.documentElement.scrollTop) -91; 
     header.setAttribute('class', bodyTopPos ? 'sticky' : ''); 
}(); 

window.onscroll = function() { 
    var bodyTopPos = 
     header.style.top < 
     (document.body.scrollTop || document.documentElement.scrollTop) -91; 
     header.setAttribute('class', bodyTopPos ? 'sticky' : ''); 
} 

아래 글을 써 보았지만 자동으로 헤더 클래스를 고정적으로 설정하는 것 같습니다.

var scrollPos = function() { 
    var bodyTopPos = 
     header.style.top < 
     (document.body.scrollTop || document.documentElement.scrollTop) -91; 
     header.setAttribute('class', bodyTopPos ? 'sticky' : ''); 
}(); 

window.onscroll = scrollPos(); 

당신은 그냥 전화, 그것을 명명 된 기능을 확인하고 onscroll 핸들러로 설정, 내 작업 바이올린 예를 HERE

+0

'scrollPos'는 IIFE가 두 코드 블록에서 아무것도 반환하지 않기 때문에 아무 것도 같지 않습니다. 어쨌든 기능을 즉시 실행하는 이유는 무엇입니까? –

+0

페이지 내에 고정 된 위치가있는 경우 실행해야하므로 실행해야합니다. 페이지가 앵커 포인트에있을 때 즉시로드하지 않으면 사용자가 스크롤 할 때까지 함수가 수행되지 않습니다. 내가 필요로하는 것을 어떻게 돌려 줄 수 있을까? –

답변

1

간단한 볼 수 있습니다.

function scroll() { 
    var bodyTopPos = 
     header.style.top < 
     (document.body.scrollTop || document.documentElement.scrollTop) -91; 
     header.setAttribute('class', bodyTopPos ? 'sticky' : ''); 
} 
scroll(); 
window.onscroll = scroll; 
+0

아 감사합니다. 완벽하게 작동 :) –

관련 문제