2009-07-11 2 views
3

방화 광을 사용하여 자바 스크립트를 디버깅하는 방법을 이해하려고합니다. 그래서 아래에 HTML이 있습니다. 그리고 var에 'watch expression'을 설정하고 싶습니다. 나는 방화범의 스크립트 탭에 가서 시계 창을 열고 "새로운 시계 표현"라는 영역으로 에 들어갔다.Firebug에서 Watch 식 설정 : ReferenceError -s가 정의되어 있지 않습니다.

ReferenceError: s is not defined 

이유 :

는 오류가 발생합니다?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 

<style type="text/css"> 
.StateOne .InitiallyHidden { display: none; } 
.StateTwo .InitiallyVisible { display: none; } 
</style> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> 
<script language="javascript" type="text/javascript"> 
    $(document).ready(function() 
    { 

     $('.x').click(function() { 
       var s = $("#StateContainer")[0]; 
       s.className = (s.className == 'StateOne' ? 'StateTwo' : 'StateOne'); 
     }); 

    }); 
</script> 





</head> 

<body> 

<button class="x">Change StateContainer</button> 

<div class="StateOne" id="StateContainer"> 
    <div class="InitiallyVisible">Visible first</div> 
    <div class="InitiallyHidden">Visible second</div> 
    <div class="InitiallyVisible">Visible first</div> 
    <div class="InitiallyHidden">Visible second</div> 
    <div class="InitiallyVisible">Visible first</div> 
    <div class="InitiallyHidden">Visible second</div> 
    <div class="InitiallyVisible">Visible first</div> 
    <div class="InitiallyHidden">Visible second</div> 
</div> 



</body> 
</html> 

답변

6

변수 's'는 함수 내에서 선언 되었기 때문에 'x'의 클릭 핸들러 안에서만 정의됩니다. 클릭 기능 내에 중단 점을 설정하면 's'가 작동합니다.

그것은 일반적으로 전역 변수를 만들 수있는 좋은 방법은 아니지만과 같이,() 함수 .ready $ (문서)의 외부로 선언하여 당신이 '의'전역 변수를 만들 수있는 디버깅을 위해서 :

<script language="javascript" type="text/javascript"> 
    var s; 
    $(document).ready(function() 
    { 

     $('.x').click(function() { 
       s = $("#StateContainer")[0]; 
       s.className = (s.className == 'StateOne' ? 'StateTwo' : 'StateOne'); 
     }); 

    }); 
</script> 
관련 문제