jQuery / Javascript错误:myvar [i]未定义

时间:2011-04-04 00:34:35

标签: javascript jquery arrays

为什么我收到此错误?

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?

    });    
  });  

});

3 个答案:

答案 0 :(得分:3)

您正在尝试使用字符串索引(i,attr('class')的结果)访问基于索引的(0,1,2)数组。

最简单的修复方法是为myvar使用一个对象(也就是假的哈希数组),并将键设置为类名。

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

使用myvar,你仍然可以使用myvar [i],我是字符串索引(一,二......)

答案 1 :(得分:1)

“i”的价值是多少? 我怀疑你没有得到myvar = null,但myvar [0] = null因为你没有向数组中添加任何数据。

是否可以在匿名函数中包含该脚本。

答案 2 :(得分:1)

正如我所说,你的价值可能是错的,

它应该从0,1,2 et ....开始打印值或警告并检查它

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

    });