본문 바로가기
IT Tips

카테고리위치 변경시 undefined error 처리 방법

by SenseChef 2012. 4. 7.

HTML이나 Javascripts로 코딩을 하다보면 Undefined Error가 나곤 합니다.
이것은 정의되거나 존재하지 않는 Object를 참조 했을 때 발생하는 문제인데 하기의 티스토리 사례를 참조 하시면 문제를 해결하는데 도움이 될 것으로 판단 됩니다.

티스토리에서 "카테고리의 다른 글" 보기 위치를 변경하는 경우 http://blog.missflash.com 운영자가 만든 Javascript을 이용하게 되는데 Undefined error가 화면에 표시되는 경우가 있습니다.

이런 에러는 작성한 글에 아무 카테고리도 적용하지 않은 경우에 발생합니다. 아래는 제 블로그의 수정 전 모습입니다.

  * 하단에 undefined라고 표시됩니다. 이 글은 아직 아무 카테고리로도 분류되어 있지 않아 에러가 발생했습니다.

 

  * 이 글은 카테고리로 분류되어 있어 에러가 없이 잘 나옵니다.

 

"카테고리의 다른 글"을 처리하기 위해 skin.html에 추가한 Javascript는 서버로부터 해당 글의 카테고리 정보를 받기를 기대하고 기다리는데, 아무런 카테고리로 분류되어 있지 않은 글이라면 서버에서는 어떤 정보도 보내주지 않습니다.

따라서 카테고리의 다른 글이 위치해야 할 곳에 Undefined라고 표시되면서 눈에 거슬리는 상태가 됩니다.

이와 관련 해당 블로그에 방문하여 댓글도 남기고 문의 했는데 바쁘신지 응답이 없어서 제가 직접 수정해 보았습니다.

저와 같이 Undefined error가 나시는 분들은 참조하여 수정해 보시기 바랍니다.

수정해야 할 부분은 카테고리의 다른 글 위치를 변경할 곳에 넣어둔 Scripts입니다.

<!-- 카테고리 다른글 위치 변경 시작 -->
<div id="MF_Reference" class="another_category another_category_color_white"></div>
<script type="text/javascript">
//<![CDATA[
// Created by MissFlash(http://blog.missflash.com)
var MF_Reference = document.getElementById('MF_Reference');
MF_Reference.setAttribute("id", "MF_Reference" + MissFlash_Div_Num);
MF_Reference.className = "another_category another_category_color_gray";
var ref_source = getElementsByClass(MissFlash_Div_Num,"another_category");
if (ref_source == null) //카테고리로 분류되지 않은 글이 있는 경우 에러처리
 {
   // alert("Error of NULL data"); This article doesn't have categories.
   // return true;
 }
else     // This article is classified into some of categories.
 {
   MF_Reference.innerHTML = ref_source;
   MissFlash_Div_Num += 1;
   //]]>
 }
</script>
<!-- 카테고리 다른글 위치 변경 끝 -->

상기 scripts에서 굵은 글씨로 표현된 부분을 수정하면 됩니다.

Scripts 중간에 ref_source라는 변수를 만드는데, 카테고리로 분류되어 있지 않으면 이 변수에 아무것도 들어가지 않는 null값이 됩니다. 따라서 null 값이 아닌 경우에만 표시 루틴이 실행 되도록 if ~ else ~ 구문을 이용해 수정 했습니다.

화일 

Scripts.txt

티스토리가 아닌 다른 Scripts나 코드더라도 동일한 접근으로 문제를 풀수 있겠습니다.

If 문으로 Object가 null인지 점검하여, 존재하지 않는 경우에는 예외 처리를 하도록 하는 것입니다.

 

기타 궁금한 사항 있으면 문의 주시기 바랍니다.

행복한 하루 되세요 !

 

 

 

 

댓글10

  • dd 2012.08.27 05:32

    dd
    답글

  • 스텔라 2013.01.08 19:00

    안녕하세요. 전 가족과 함께 블로그를 운영하는 별이라고 해요.
    여쭈어 볼 것이 있어서 글을 남겨요.
    누군가 제 블로그에 댓글을 달면 댓글단 사람의 이름대신 undefined 이 있어요.
    undefined는 확실하지 않은, 불분명한 이런뜻이잖아요?
    그럼 무엇이 문제인지 어떻게 처리해야 하는지 궁금해요.
    저희 엄만 그 이유를 모르겠다고 하셔서 제가 알아볼려고요.
    아시면 알려주시면 감사하겠습니다. 그럼 안녕히 계세요.
    답글

    • SenseChef 2013.01.08 21:45 신고

      그런 문제가 있으시군요 ! 댓글 단 사람 이름에 Undefined가 나온다는 스킨에 오류가 있는 것으로 생각됩니다. 스킨을 변경 하다가 실수로 댓글 영역의 변수에 오타가 들어가 있을 가능성도 있습니다. 한번 살펴 보시고 그래도 안 되면 스킨 이름과 스킨 영역을 메일로 보내 주세요. 그럼 살펴 볼께요. sensechefhelp@gmail.com입니다. 가족들이 함께 블로그 운영 하신다니 보기 좋네요.

  • 스텔라 2013.01.09 15:19

    로그아웃에서만 그런 문제가 생겨요.
    답변 갑사합니다. 메일 보내드릴께요.
    답글

  • 배고픈하루 2013.10.02 18:29

    테두리는 남아있는데...어쩌죠ㅠㅠ??
    답글

    • SenseChef 2013.10.03 07:01 신고

      제 블로그와 동일하게 하시려면 제 블로그의 Source를 참조 하시기 바랍니다. 웹 브라우저에서 소스보기를 하시면 전체를 볼 수 있습니다. 감사합니다.

  • 알 수 없는 사용자 2014.11.09 10:23

    http://enthyi.tistory.com/ 제 블로그에 사이드바가 맨아래로 밀려버렸습니다 ㅠㅠ
    제가 한건 애드센스 광고 부착 한것 밖에 없어서 애드센스를 다시 빼버려도 사이드바가 아래로 밀렸네요.
    혹시아시면 제발 알려주시기 바랍니다 크흘흙흙... 으엉엉
    답글

    • SenseChef 2014.11.09 21:58 신고

      </div> 태그가 제대로 맞추어져 있는지 확인해 보기 바랍니다. <div>수와 </div>수가 일치해야 하거든요. 저 역시 밀림 현상을 겪었는데 문제가 위 태그에 있었거든요. 잘 살펴 보시기 바랍니다.

  • 알 수 없는 사용자 2014.11.14 10:00

    감사합니다 ! 해결됫어요 ㅎ ㅎ
    답글