2014-10-04 5 views
0

코드에 오류가 계속 발생합니다.null의 'addEventListener'속성을 읽을 수 없습니다. 오류

진행중인 경우 버튼이 페이지에 있는지 확인하려고합니다. 버튼은 페이지가로드 될 때 페이지에 있지 않지만 양식을 제출 한 후 바꿉니다 외부 페이지에 있습니다. 그런 다음 html 페이지가 ajax를 통해로드되었습니다.

var reloadButton = document.getElementById('reloadPage'); 

if (reloadButton.length > 0) { 

    function reloadPage() { 

     location.reload(); 

    } 

    if (reloadButton.addEventListener) { 

     reloadButton.addEventListener('click', reloadPage, false); 

    } else { 

     reloadButton.attachEvent('onclick', reloadPage); 

    } 

} 

나는 요소가있는 경우 존재하지 않는 경우 오류가 발생하는 것을 이해하지만, if 문 것을 내가 만든 이유. 다른 방법으로 요소를 확인해야합니까?

답변

0

reloadButton.length가있을 수도 있고 없을 수도있는 속성을 호출하려고합니다. 사용할 수없는 경우 속성에 액세스하려고하면 오류가 발생합니다. 간단히 할 수 있습니다 :

if (reloadButton) 
+0

고맙습니다 @kellycode. 이렇게하면 오류가 사라지는대로 내 문제가 해결되었습니다. 이제 양식이 원래 문서와 함께로드되지 않은 상태에서 양식을 제출 한 후 감사 메시지와 함께 양식을 대체하는 외부 페이지가 있기 때문에 버튼이 작동하지 않습니다. 내부의 스크립트 태그를 thank-you.html에 추가하여 내 외부 js 파일로 코드를 유지해야하는 문제를 어떻게 해결할 수 있습니까? –

+0

질문이 명확하지 않은 것 같습니다. 양식 제출이 다른 "감사합니다"페이지를 표시하는 경우. "고맙습니다"페이지에서 페이지를 새로 고침하지 않으려는 경우 원래 페이지로 돌아가는 링크가 필요합니다. 또는 AJAX로 양식을 제출하고 결코 페이지를 떠나지 말고 성공 사례와 함께 "고맙습니다"라는 문구를 표시 할 수 있습니다. 귀하의 페이지 상태를 잃지 않으므로 양식 제출보다 명확한 접근 방법이라고 생각합니다. – kellycode

관련 문제