【问题标题】:JavaScript /jQuery variable scope causing errorsJavaScript / jQuery 变量范围导致错误
【发布时间】:2012-03-02 18:09:40
【问题描述】:

我有一个非常简单的 sn-p 代码和一个非常(可能)我需要进行的简单更改。

我无法在我的 jQuery 脚本中访问我需要的变量:

var Objects; // Used to store stuff
enable_reordering();

function enable_reordering()
{
    $('a.move-object').click(function(){

          Objects.moveMe = $(this);
          $('#image-title').text( $(Objects.moveMe).attr('data-child-title') );
          return false;
    });
}

当我尝试将Objects.moveMe 的值更改为任何值时,我的浏览器抱怨说没有设置对象。 (Error: Objects is undefined)。

如何才能在整个脚本中使用变量进出函数?


更新:

错误是由该行引起的

$('#image-title').text( $(Objects.moveMe).attr('data-child-title') );

我第一次尝试使用变量的地方。

【问题讨论】:

  • 注意$(Object.moveMe)基本上是在做$($(this)),这是多余的。
  • 我不确定,但我认为你需要使用 var Objects = new Object;
  • @pimvdb 它将被用于其他功能,这就是需要它的原因。上面的例子只是为了概述我遇到的问题。

标签: javascript jquery variables global-variables scope


【解决方案1】:

试试:http://jsbin.com/ocodoz/

var a;
alert(a);

a === undefined 但是声明在当前作用域中..

你的对象必须设置为一个对象

var Objects = {};

【讨论】:

    【解决方案2】:

    这不是范围问题。问题是,正如错误所说,Objectsundefined。看起来你想设置它的一个属性,所以将它初始化为一个对象字面量:

    var Objects = {};
    

    目前,您正在尝试做的是有效:

    undefined.moveMe = $(this);
    

    当你声明一个变量时,它的值是undefined,直到你给它分配了一些其他的值。通过为其分配一个空的对象字面量,您可以设置该对象的属性。

    【讨论】:

    • 没问题,很高兴我能帮上忙 :)
    猜你喜欢
    • 2022-11-17
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 2011-04-16
    相关资源
    最近更新 更多