2012-04-16 77 views
0

我想定义默认为我的插件默认,这是javascript代码:定义插件

var opts = { 
    'width': 957, 
    'height': 590, 
    'left': ($(window).width()/2) - (this.width), 
    'top': ($(window).height()/2) - (this.height) 
};​ 

opts.left回报NaN。 什么是问题?

编辑:我想使用宽度从我的对象在我的对象。

+0

你需要告诉我们更多关于这个opts在哪里的内容。如果你有这里面的插件代码,你打电话这就像一个jQuery函数..那么'$(this).width()'应该让你的宽度 – 2012-04-16 21:33:51

+0

@Vega让我解释一下,我有一个插件,我想设置宽度,高度,左侧和右侧默认情况下,所以我创建了一个对象,并在此对象上我有4个属性(宽度,高度,左,右)。宽度和高度是一个常数(宽度:957和高度:590)现在我想从这个属性计算左边和顶部的值,所以我需要在我的对象中的这个属性的值。 – MajAfy 2012-04-16 21:56:37

回答

0

this.width不是一个数值。

的NaN原产值时算术运算导致未定义的或不可表示的值

NaN值产生的。这些值不一定代表溢出条件。 NaN也是由于试图强制转换为非数字值的数字值,而这些数字值没有可用的基本数值。


更新基于注释:

this不是对象,它的函数的调用者。因此this.width不会给你财产的width

Working LIVE DEMO

+0

opts.width是957 – MajAfy 2012-04-16 21:21:24

+0

@MajAfy。阅读更新。 – gdoron 2012-04-16 21:24:50

+0

谢谢,但我如何使用我的对象中的属性在我的对象? – MajAfy 2012-04-16 21:31:34

0

最有可能的,this.width正在恢复你undefined一个非数字的值。

对于前:100 - undefined将返回NaN

尝试使用$(this).width()$(this).height()

var opts= { 
     'width': 957, 
     'height': 590, 
     'left': ($(window).width()/2)-($(this).width()), 
     'top': ($(window).height()/2)-($(this).height()) 
}; 

在有效范围内的上述应工作提供了this

+0

我试图使用$(this)来代替这个,但是它们都返回元素,我想使用宽度在opts – MajAfy 2012-04-16 21:27:53

+0

@MajAfy'$(this).width()'而不仅仅是'$(this)'。你也从'this'上下文中调用opts。 – 2012-04-16 21:29:08

+0

是的我知道,我的意思是我用$(this)取代了这个,所以this.width改为$(this).width,但是如果我写$(this).width()将返回NaN的宽度。元素,但我需要在我的对象中的宽度属性的值。 – MajAfy 2012-04-16 21:33:53