관리 메뉴

키스세븐

"null이거나 객체가 아닙니다" 에러 해결 방법 - javascript 사용의 경우 본문

IT와 생활/홈피와 블로그

"null이거나 객체가 아닙니다" 에러 해결 방법 - javascript 사용의 경우

키스세븐지식 2015. 1. 17. 07:00
공유하기 링크
필요하면 공유하세요 ^^
이 블로그를 북마크 하세요! 좋은 정보가 계속 이어집니다.
["null이거나 객체가 아닙니다" 에러 해결 방법 - javascript 사용의 경우] 


자바스크립트나 자바스크립트가 포함된 파일을 사용할 경우 이런 메세지가 나오는 경우가 있습니다. 
"null이거나 객체가 아닙니다", "document.body 는 null입니다" 

또는 메세지가 나오지 않더라도 기능이 작동되지 않으면서 브라우저 왼쪽 하단에 오류가 있다는 안내가 뜹니다.  



 

null 에러의 원인 

일반적으로는 HTML을 처음 배울 때 javascript 소스를 <HEAD>~</HEAD> 사이에 넣으라고 배웁니다. 
그런데 이게 항상 맞는 말은 아니라는 것에 있습니다. 

페이지가 시작될 때부터 적용되어야 할 효과도 있지만, 페이지가 완전히 로딩된 다음에야 적용할 수 있는 효과도 있기 때문입니다. 
예를들어 문장을 복사하는 기능을 자바스크립트로 구현하는 것처럼 말입니다. 
HEAD에서 자바스크립트는 이미 실행이 되었는데 그 아래의 문서가 아직 안 불러와져 있는 경우, 복사할 것이 없으니 당연히 오류가 발생할 것입니다. 

결론은, 대상이될 소스가 로딩이 끝나기 전에 스크립트가 먼저 로딩되어 호출되는 경우에도 이런 메세지가 출력되니 자바스크립트만 혼자 실행된 것은 아닌지 의심해 봐야 한다는 것입니다. 



 


 

null 에러 해결 방법 

만약, 자바스크립트 소스를 삽입한 후에 위와 같은 메세지가 나오는 경우라면 아래와 같이 해결해 보십시오. 
<script type="text/javascript">~</script>의 소스를 <HEAD>~</HEAD> 사이에서 지웁니다. 
그 소스를 복사해서 파일의 가장 마지막의 </body>의 바로 윗줄에 삽입해 넣습니다. 

만약, tail.php처럼 따로 객체로 만들어서 불러오는 구조라면 tail.php에 저장합니다. 


위의 원인부분에서 말한대로 페이지가 다 로딩된 다음에야 쓸 수 있는 효과이니 아예 자바스크립트 부분을 맨 마지막에 넣어서 로딩이 끝날 때 자바스크립트가 실행되게 하는 것입니다. 
위의 문장복사 기능을 예를들자면 자바스크립트가 실행되기 전에 복사될 문서가 이미 다 불러와져 있으니 해결이 될 것이라는 뜻입니다. 

마지막으로 소스의 "모든 경로"를 살핍니다. 엉뚱하게 경로 때문에 생기는 문제들도 꽤 많습니다. 
설명하자면, body문에서 지정한 경로대로 자바스크립트가 불러서 사용하여야 하는데 경로가 잘못되어 불러올 수가 없으니 에러가 난다는 얘깁니다. 

[저작권법 표시] 이 글의 원본: 키스세븐(www.kiss7.kr)


이런 경우엔 자바스크립트를 마지막에 넣더라도 여지없이 에러가 나고 맙니다. 
이 경우일지도 모르니, 경로가 다 맞게 되어 있는지 확인해 봐야 합니다

★ 이 정보가 도움이 된다면 아래의 공감을 부탁드립니다! ^^
(로그인 필요없음)



키스세븐지식은 키스세븐과 그룹 사이트입니다.

아래로 더 내려 가 보세요!

혹시 읽을만한 것이 또 있을지도 모르잖아요? ^^

이 블로그를 북마크 하세요! 좋은 정보가 계속 이어집니다.
http://kiss7.tistory.com

공유하기 링크
필요하면 공유하세요 ^^
Comments