2011-04-04 77 views
1

爲什麼我會收到此錯誤?jQuery/Javascript錯誤:myvar [i]未定義

jQuery(document).ready(function($){ 

    $('.stuff').each(function(){ 

    function thing(id, count){ 
     this.id = id;  
     this.count = count; 
    } 

    var myvar = new Array(); 
    myvar.push(new thing('one', '134')); 
    myvar.push(new thing('two', '225')); 


    $('a', this).click(function(event){ 
     var i = $(this).attr('class'); // class is 'one', 'two' etc... 
     // myvar[i] appears undefined here! wtf? 

    });  
    }); 

}); 
+0

你有一個額外的括號,它應該是'變種I = $(本).attr( 'class');'或者是一個錯字? – karim79 2011-04-04 00:49:42

+0

它的錯字,錯誤仍然存​​在:( – Alex 2011-04-04 00:50:30

+0

@can你可以打印我在console.log中的值或警告i值,它可能是錯誤的... – kobe 2011-04-04 00:56:58

回答

3

您試圖訪問基於索引(0,1,2)的數組和字符串索引(i,attr('class')的結果)。

最簡單的修復方法是爲myvar使用一個對象(又名假散列數組),並將鍵設置爲類名稱。

var myvar = { 
    one : 134, 
    two : 225 
}; 

隨着該MYVAR,你仍然可以使用MYVAR [I]與我是如我所說的字符串索引(一,二......)

+0

謝謝,myvar [i]現在的作品:D但我記得可以用另一種方式訪問​​對象,有點或類似的東西我用'myvar.i'試過但不起作用 – Alex 2011-04-04 01:20:56

+1

@Alexandra myvar [「string」]與myvar相同。 string for objects。第二種形式有限制,比如字符串不能以數字開頭,也不能是保留字如果你想使用'i'的值,你需要使用myvar [i ],因爲'myvar.i'與'myvar [「i」]' – david 2011-04-04 01:26:51

+0

相同感謝解釋它大衛 – Ben 2011-04-04 02:27:15

1

「我」的價值是什麼? 我懷疑你沒有得到myvar = null,但myvar [0] = null,因爲你沒有添加任何數據到數組中。

您可以在匿名函數中包含腳本嗎?

+0

我更新了代碼:D – Alex 2011-04-04 00:46:40

1

,你的價值我可能是錯的,

應該有0,1,2等開始....打印值或警告,並檢查它

$('a', this).click(function(event){ 
     var i = $(this).attr('class'); // class is 'one', 'two' etc... 
     // myvar[i] appears undefined here! wtf? 

    });