2012-04-16 51 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