我想获取每个按钮的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>
答案 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
});
希望他的帮助。
$(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;
答案 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
时的值。