【问题标题】:jQuery / Javascript error: myvar[i] is undefinedjQuery / Javascript 错误:myvar[i] 未定义
【发布时间】:2011-04-04 00:34:34
【问题描述】:

为什么会出现这个错误?

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?

    });    
  });  

});

【问题讨论】:

  • 你有一个多余的括号,应该是var i = $(this).attr('class'); 还是打错字?
  • 打错了,错误依旧存在:(
  • @你能在console.log或者alert i value中打印i的值吗,可能是错的...

标签: javascript jquery arrays


【解决方案1】:

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

最简单的解决方法是为 myvar 使用一个对象(又名假哈希数组)并将键设置为类名。

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

有了这个 myvar,你仍然可以使用 myvar[i],而 i 是字符串索引(一,二...)

【讨论】:

  • 谢谢,myvar[i] 现在可以工作了:D 但我记得对象可以通过其他方式访问,用点或类似的东西。我尝试使用myvar.i 但不起作用
  • @Alexandra myvar["string"] 与对象的 myvar.string 相同。第二种形式虽然有限制,例如字符串不能以数字开头,也不能是某些保留字。如果你想使用i的值你需要使用myvar[i],因为myvar.imyvar["i"]是一样的
【解决方案2】:

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

您能否将脚本包含在匿名函数中。

【讨论】:

    【解决方案3】:

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

    它应该以 0,1,2 等开头 .... 打印值或警报并检查它

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

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 2014-05-12
      • 1970-01-01
      • 2014-10-02
      • 2013-04-03
      • 2017-01-16
      • 1970-01-01
      • 2015-12-12
      相关资源
      最近更新 更多