2012-09-19 5 views
2

내 사이트에서 완벽하게 작동하지만 모든 이유로 내 사이트의 링크를 클릭 할 때마다 콘솔에 오류 메시지가 표시됩니다. 오류가 여기 코딩이 행과 관련이있다 :링크를 클릭 할 때마다 스크립트 오류가 발생합니다.

"SCRIPT5007 : 재산 '최고'의 가치를 얻을 수 없습니다 : 개체가 null 또는

jQuery(function($){ 
    $('.navbar a, .scroll a, .smoothscroll a').bind('click',function(event){ 
    var $anchor = $(this); 

    $('html, body').stop().animate({ 
     scrollTop: $($anchor.attr('href')).offset().top 
    }, 850,'easeInOutExpo'); 

    event.preventDefault(); 
    }); 
}); 

내가 점점 오전 오류이있다 정의되지 않은 custom.min.js, 6 행 문자 197 "가 강조되어 정확한 코드는 위의 코드의이 부분은

:

$('html, body').stop().animate({ 
    scrollTop: $($anchor.attr('href')).offset().top 
}, 850,'easeInOutExpo') 

내가 아는입니다 때 나는 위의 코드를 제거, 링크 내-에 스크롤은 이와 같은 페이지에 작업 중지 :

http://www.northtownsremodeling.com/things-to-know.php

당신은 팝업 오류가 쉽게 필터 등으로 페이지로 이동하여 발생하고 콘솔에 머물 볼 수 있습니다 이 :

http://www.northtownsremodeling.com/bathroom/

그리고 필터 버튼 중 하나를 클릭.

궁극적으로, 스크롤바 설정이 여전히 작동하지만 오류가 더 이상 나타나지 않도록하려고합니다. 나는이 스크립트를 오래 전에 만들었고, 모든 것이 완벽하게 작동 할 때이 오류를 일으킬 수있는 것에 관해서는 정말로 혼란 스럽다.

감사합니다.

+0

는'합니까을 console.log ($ ($의 anchor.attr ('HREF')))'출력 원하는 값에 처음? – inhan

+0

흠. 나는'.navbar a, 또는 .scroll a'를 어디에도 가지지 않는 것처럼 보입니다. 나는 .smoothscroll을 가진 div 클래스 만 가질 수 있고, 은 그것을 smoothscrolls로 호출합니다. 난 그냥 위의 두 삭제하고 여전히 오류가 발생, 오류는 지적했다 "."Uncaught TypeError : 정의되지 않은 'top'속성을 읽을 수 없습니다. – abass

답변

5

오류가 발생하는 코드는 미리 정의 된 div로 스크롤하는 것이고 url (클릭 한 링크의 href 속성)의 해시 태그에 id (대상 div)가 있어야합니다.

페이지에 존재하는 요소의 ID 인 해시 태그가 없기 때문에 "normal"링크를 클릭하면 문제가되는데 $($anchor.attr('href'))은 빈 배열을 제공합니다. 즉, $("http://www.northtownsremodeling.com/alliances.php")과 같이 선택할 수있는 요소가 없기 때문에, 따라서이 경우 offset()은 정의되어 있지 않으므로 오류가 발생합니다. 이 문제를 해결하려면

대체 :

$('html, body').stop().animate({ 
    scrollTop: $($anchor.attr('href')).offset().top 
}, 850,'easeInOutExpo'); 

로 :

// get target div to scroll to 
var target = $($anchor.attr('href')); 
// if target is valid, scroll to 
if(target && target.offset()){ 
    $('html, body').stop().animate({ 
     scrollTop: target.offset().top 
    }, 850,'easeInOutExpo'); 
} 
+0

좋아, 그게 효과가 있었어 ... 지금 내가하고있는 코드가 무엇인지, 그리고 내가 가지고있는 코드가 무엇인지에 관해서는 상당히 혼란 스럽긴하지만 거기에 불필요한 ... 무슨 일이 일어나고 있는지 이해하려면 무엇이 필요합니까? – abass

+0

방금 ​​설명했습니다 :) –

+0

그래, 고마워,이게 완벽하게 작동 했어. 내가 이런 식으로 뭔가 잘못하고 있는거야? 당신의 솔루션으로 그것을 조종하는 빈민굴 같은 종류의, 나는 단지 내가하고있는 일에 대해 잘못된 코드를 사용하고있는 것처럼 느껴진다. 당신의 솔루션을 넣으면 작동한다. 고마워, 고마워! – abass

1

데모 : http://jsfiddle.net/SWgYD/

내가 href 특성을 잘 선택기가 포함되어 있지 않기 때문에 그것이라고 생각합니다. 링크가 id가 nav 인 블록에 일치하면 링크 href#nav이어야합니다.

이벤트 처리기는 탐색 링크에만 바인딩해야합니다.

관련 문제