数组在jquery中给出了一个未定义的

时间:2017-12-06 20:57:25

标签: javascript jquery arrays

我想获取每个按钮的ID并将其保存在数组中。但数组看起来未定义。为什么

Jquery代码:

var arr = new Array();

$(".button").each(function () {
     arr.push($(this).attr('id'));              
})

console.log(arr);//undefined

 }

HTML CODE:

    <div id="1" class="button" data-bind="dxButton: { }"></div>
    <div id="2" class="button" data-bind="dxButton: { }"></div>
    <div id="3" class="button" data-bind="dxButton: { }"></div>
    <div id="4" class="button" data-bind="dxButton: { }"></div>

4 个答案:

答案 0 :(得分:1)

 $(function(){
         var arr = new Array();
         $(".button").each(function () {
               arr.push($(this).attr('id'));
        });
        console.log(arr); //Array(4) 0:"1" 1:"2" 2:"3" 3:"4" length:4
      });



<body>
<div class="container">
  <div class="row">
    <div class="col-md-12">
      <div id="1" class="button" data-bind="dxButton: { }"></div>
      <div id="2" class="button" data-bind="dxButton: { }"></div>
      <div id="3" class="button" data-bind="dxButton: { }"></div>
      <div id="4" class="button" data-bind="dxButton: { }"></div>
    </div>
  </div>
</div>
</body>

结果是: 阵列(4) 0:&#34; 1&#34; 1:&#34; 2&#34; 2:&#34; 3&#34; 3:&#34; 4&#34; 长度:4

答案 1 :(得分:1)

在这种情况下,使用map()函数效率很高。

注意:您的代码应该可以尝试将其插入到该函数中,以确保您的DOM中的按钮已完全加载:

$(function(){
   //Your logic here
});

希望他的帮助。

&#13;
&#13;
$(function() {
  var arr = $(".button").map(function() {
    return this.id;
  }).get();

  console.log(arr);
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="1" class="button" data-bind="dxButton: { }"></div>
<div id="2" class="button" data-bind="dxButton: { }"></div>
<div id="3" class="button" data-bind="dxButton: { }"></div>
<div id="4" class="button" data-bind="dxButton: { }"></div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

感谢大家,它就是这样的。

var arr = [];
$(".button").each(function () {
  arr.push($(this).attr('id'));              
        })
console.log(arr);

答案 3 :(得分:0)

您的示例中的语法略有不同。您错过了;并且有一个额外的}

清理它,我们有:

var arr = new Array();
$(".button").each(function () {
  arr.push($(this).attr('id'));
});
console.log(arr);

请参阅此处的工作示例:https://jsfiddle.net/8Lt2m4u2/

正如其他人所建议的那样,这可能是一个时间问题,但是console.log(arr);不应该在任何时候返回undefined,因为您定义它并将其初始化为空数组。即使在console.log时DOM中不存在您的按钮,它至少应该打印一个空数组。

需要注意的一点是,console.log并不一定代表您期望的价值。有关详细信息,请参阅this SO question/answer。解决方法是执行console.log(JSON.stringify(arr));,如果在开发人员控制台中查看对象之前对象发生了变化,则无关紧要。它将打印执行console.log时的值。