javascript 函数的变量作用域问题

2024-02-22

我正在尝试使用 spin.js 创建一个函数。该函数加载微调器,然后如果使用它的参数再次调用它,则会停止微调器。我无法获得正确的变量范围。因此,当我调用该函数来停止时,我得到一个未定义的信息submitSpinner.

http://jsfiddle.net/atlchris/tQdZB/1/ http://jsfiddle.net/atlchris/tQdZB/1/

function submitSpinner(stopSpinner) {
    var theSubmitSpinner;

    if (stopSpinner === true) {
        theSubmitSpinner.stop();

        $('#overlay').remove();
    }
    else {
        $('body').append('<div id="overlay"><div id="spinner"></div></div>');

        theSubmitSpinner = new Spinner({
            lines: 13,
            length: 15,
            width: 5,
            radius: 20,
            color: '#ffffff',
            speed: 1,
            trail: 60,
            shadow: false
        }).spin(document.getElementById("spinner"));
    }
}

submitSpinner();

$(function() {
    $('#overlay').on('click', function() {
        alert('click');
        submitSpinner(true);
    });
});​

你为什么不归还Spinner函数中的对象,并让调用者在适当的时候调用 .stop() ?读起来更好,而且不必用随机变量污染局部作用域,也使得submitSpinner()更简单。

function createSubmitSpinner() {

    $('body').append('<div id="overlay"><div id="spinner"></div></div>');

    return new Spinner({
        lines: 13,
        length: 15,
        width: 5,
        radius: 20,
        color: '#ffffff',
        speed: 1,
        trail: 60,
        shadow: false
    }).spin(document.getElementById("spinner"));
}


$(function() {
    var spinner = createSubmitSpinner();
    $('#overlay').on('click', function() {
        alert('click');
        spinner.stop();
    });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript 函数的变量作用域问题 的相关文章

随机推荐

  • 如何从我的选择器中获取值? Xamarin 形式

    我无法取出所选内容string从我的选择器中 这是我的代码 XAML
  • 为什么我们需要两个定义:整型常量表达式和转换常量表达式?

    C 14 中的 5 19 3 定义了整型常量表达式和转换常量表达式 An 积分常量表达式是积分或的表达式 无范围枚举类型 隐式转换为纯右值 其中 转换后的表达式是核心常量表达式 注 此类 表达式可以用作数组边界 8 3 4 5 3 4 位字
  • MS SQL 2008 连接 - 从多个结果中选择一个

    我正在尝试运行以下查询 但不确定如何将其限制为仅一个结果 在下面的查询中 clientcontactid 21901 工作的客户端有 2 个地址 这意味着返回 2 个结果 Query select cc contactpersonid cc
  • 让 Mac 信任应用程序(登录窗口上的协同作用)

    我试图在我的 mac 启动时加载协同作用 以便我可以使用鼠标 键盘登录 我按照这些说明进行操作 http sourceforge net p synergy2 discussion 199580 thread 76cf630a http s
  • RCP 4 切换工具栏中的按钮

    我正在尝试执行以下操作 在工具栏中创建一个按钮 已作为 处理的工具项 完成 单击按钮 让按钮看起来像被按下一样 我读过一些有关使用 IAction AS CHECK BOX 的内容 但我找不到任何关于如何执行此操作的明确 RCP 4 示例
  • 可以使用 API GET 但不能使用 API POST

    我正在 VS 2013 中处理现有的 Windows 服务项目 我添加了一个 Web API 控制器类 我现在不记得它是 v2 1 还是 v1 控制器类 无论如何我将其称为 SyncPersonnelViaAwsApiController
  • “24:00”字符串中的 DateFormatter 返回 Nil

    我似乎无法弄清楚为什么只有 24 00 返回 nil 而不是 12 00AM 而 23 59 则正确返回为 11 59PM let dateAsString 24 00 let dateFormatter DateFormatter dat
  • 用于语音检测和辨别的开源代码

    我有 15 盘录音带 我相信其中一盘包含我祖母和我谈话的旧录音 快速尝试找到合适的地方并没有找到 我不想听20个小时的磁带才能找到它 该位置可能不在其中一盘磁带的开头 大多数内容似乎分为三类 按照总长度的顺序 最长的在前 沉默 语音广播和音
  • 如何通过按 iPhone 中的按钮将行/单元动态添加到 UITableView

    最初我有一个只有一个添加按钮的表格视图 当用户按下此按钮时 我需要增加单元格计数并添加单元格 如下所示 如何编写行数以及如何通过单击添加按钮添加新行 行数 NSInteger tableView UITableView tableView
  • = 0) ruby​​'' aria-label='找不到 gem 'sqlite3 (>= 0) ruby​​''> 找不到 gem 'sqlite3 (>= 0) ruby​​'

    我正在学习 Ruby on Rails 并从 Ryan Bigg 的博客和 Agile Wed Development 书中了解了 RVM 和 Rails 的安装 这之前在我家里的电脑上是有效的 但在工作中它给了我错误 depot rail
  • 完全重新安装 Xcode 9

    我是在我的 2016 款 15 英寸 MacBook Pro 安装并更新了 macOS 10 12 6 和 Xcode 9 1 上撰写的 从 9 0 开始 我在 Xcode 中遇到了非常奇怪的行为 而在 v8 x 中我没有遇到过这种情况 我
  • 从单元格内检索多种字体数据

    谷歌工作表中的单元格可以沿着存储在其中的字符串具有多种字体颜色 或其他富文本属性 也可以通过属性使用 API 来完成TextFormatRun as 在这里解释 https stackoverflow com questions 49287
  • 使用 qsub 提交连续且独立的作业的速度有多快?

    这个问题与pbs 作业忙时无输出 https stackoverflow com questions 13804373 pbs job no output when busy 即 当 PBS Torque 处于 忙 状态时 我提交的一些作业
  • 使用 Carbon 增加日期

    我正在尝试为 Laravel 4 中的预订系统创建一组限制日期 我的数据库中有一个测试行 其 start date 为 2016 01 24 end date 为 2016 01 29 这是提取行并使用 Carbon 循环遍历日期的代码 以
  • 如何更改pandas中多列的数据类型

    我正在尝试在 pandas 数据帧上运行随机森林 我知道数据框中没有空值或无穷大 但当我拟合模型时不断收到 ValueError 大概这是因为我有 flaot64 列而不是 float32 我还有很多 bool 和 int 类型的列 有没有
  • 将 len 与 get() 函数一起使用会给出错误的统计信息?

    我有一些代码要求用户输入 26 个字符来制作自己的加密代码 如果它是 26 个字符长并且不是字母表或预设encryption code 代码将改变encryption code无论他们输入什么 import tkinter from tki
  • 计算Python程序中的递归! [复制]

    这个问题在这里已经有答案了 我需要计算python程序中递归的次数 所以基本上我需要一个静态变量之类的东西 比如在 C 中 它可以计算函数被调用的次数 只需通过递归传递一个计数器 def recur n count 0 if n 0 ret
  • 为什么 Python 中 1 == True 而 2 != True ? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 中的 False 0 和 True 1 是实现细节还是由语言保证 https stackoverflow com questions 2764017 is false 0 and tru
  • Excel VBA:IF ComboBox.Value 语句

    您好 我有这个组合框 如果组合框值显示例如巴黎 我想执行一些命令 Private Sub Workbook open With Sheet1 ComboBox1 AddItem Paris AddItem New York AddItem
  • javascript 函数的变量作用域问题

    我正在尝试使用 spin js 创建一个函数 该函数加载微调器 然后如果使用它的参数再次调用它 则会停止微调器 我无法获得正确的变量范围 因此 当我调用该函数来停止时 我得到一个未定义的信息submitSpinner http jsfidd