【问题标题】:Why am I getting 'undefined' in console? [duplicate]为什么我在控制台中得到“未定义”? [复制]
【发布时间】:2014-10-13 07:20:39
【问题描述】:

这是我的代码:

var textArray = ['#text1', '#text2', '#text3', '#text4',
'#text5', '#text6', '#text7', '#text8']

$('#capture').click(function() {
    for (var i in textArray) {
      console.log($(i).offset());
    }
});

不确定为什么我在控制台中未定义。我觉得我错过了一些非常简单的东西。

【问题讨论】:

标签: javascript jquery


【解决方案1】:

因为i是数组中项目的索引,你需要使用textArray[i]来访问当前项目(如果你已经记录了i的值,它会显示0,1,2... 7).

for (var i in textArray) {
  console.log($(textArray[i]).offset());
}

【讨论】:

    【解决方案2】:

    您可能希望像这样索引数组:

    var textArray = ['#text1', '#text2', '#text3', '#text4',
    '#text5', '#text6', '#text7', '#text8']
    
    $('#capture').click(function() {
    for (var i in textArray) {
      console.log($(textArray[i]).offset());
    }
    });
    

    【讨论】:

      【解决方案3】:

      JavaScript 中的for…in 循环遍历对象的键,而不是其值。可以使用Array.prototype.forEach,给予支持; $.each 也可以作为备用,因为您使用的是 jQuery。

      var textArray = ['#text1', '#text2', '#text3', '#text4',
                       '#text5', '#text6', '#text7', '#text8'];
      
      $('#capture').click(function() {
          textArray.forEach(function (x) {
              console.log($(x).offset());
          });
      });
      

      【讨论】:

        【解决方案4】:

        您不应使用for..in 循环遍历数组。这意味着循环一个对象{}

        在下面使用

        $('#capture').click(function() {
            $.each(textArray, function(value) {
                console.log($(value).offset());
            })
        });
        

        你可以使用Array#forEach,但是IE8不支持forEach,所以我使用了jQuery的each

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-20
          • 2019-04-15
          • 1970-01-01
          • 2021-09-18
          • 1970-01-01
          • 1970-01-01
          • 2022-11-28
          • 2021-12-27
          相关资源
          最近更新 更多