javascript - 在 Firebug : ReferenceError - s is not defined 中设置监视表达式

标签 javascript firebug

我正在尝试了解如何使用 firebug 来调试我的 Javascript。所以我有下面列出的 HTML。我想在 var 's' 上设置一个监视表达式。我转到 Firebug 的 Script 选项卡 并打开 Watch Pane 并在显示“New watch expression<”的区域中输入 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>

最佳答案

变量“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>

关于javascript - 在 Firebug : ReferenceError - s is not defined 中设置监视表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1113996/

相关文章:

javascript - 如何调试网络 worker

javascript - 如何确保此 JavaScript 代码可以在 C# ASP.NET 中运行

javascript - javascript 错误何时会破坏其余代码?

javascript - 正则表达式评估,但忽略某些字符?

javascript - 是否有一种方法可以覆盖 JavaScript 对象以控制 console.log 显示的内容?

javascript - Firebug 控制台中出现 "oembed is null"错误 (JQUERY OEMBED)

javascript - 我的算法有点不对劲而且效率极低

javascript - 预先定义Object的结构

javascript - Firebug - 如何在页面加载时以 JS Debug模式启动

javascript - 我可以从外部 javascript 访问控制台命令行 API(例如来自 Firebug 或 Chrome Inspector 控制台的 $$ 和 traceAll)吗?