Javascript 未定义在Firebug:ReferenceError-s中设置监视表达式

Javascript 未定义在Firebug:ReferenceError-s中设置监视表达式,javascript,firebug,Javascript,Firebug,我试图理解如何使用firebug调试我的Javascript。所以我有下面列出的HTML。我想在变量“s”上设置一个watch表达式。我转到Firebug的脚本选项卡,打开观察窗格,并在显示“新观察表达式的区域中输入s” 我得到一个错误: ReferenceError: s is not defined 为什么? 无标题文件 .StateOne.InitiallyHidden{display:none;} .StateTwo.InitiallyVisible{display:none;} $

我试图理解如何使用firebug调试我的Javascript。所以我有下面列出的HTML。我想在变量“s”上设置一个watch表达式。我转到Firebug的脚本选项卡,打开观察窗格,并在显示“新观察表达式的区域中输入s

我得到一个错误:

ReferenceError: s is not defined
为什么?


无标题文件
.StateOne.InitiallyHidden{display:none;}
.StateTwo.InitiallyVisible{display:none;}
$(文档).ready(函数()
{
$('.x')。单击(函数(){
var s=$(“#StateContainer”)[0];
s、 className=(s.className='StateOne'?'StateTwo':'StateOne');
});
});
更改状态容器
首先可见
可见秒
首先可见
可见秒
首先可见
可见秒
首先可见
可见秒

变量“s”仅在“x”的单击处理程序中定义,因为它是在函数中声明的。如果在单击函数中设置断点,则“s”将起作用

创建全局变量通常不是一种好的做法,但为了进行调试,可以通过在$(document).ready()函数之外声明“s”来将其设置为全局变量,如下所示:

<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>

var s;
$(文档).ready(函数()
{
$('.x')。单击(函数(){
s=$(“#StateContainer”)[0];
s、 className=(s.className='StateOne'?'StateTwo':'StateOne');
});
});
<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>