由于从未接受过问题答案,因此已更新。
这:似乎搞砸了:(见每个评论)
var box = _.els.grid.children(), // what is "_.els.grid."? _ is undefined
box_l = box.length,
i = 0; //semi colon?
box_arr = []; //no var?
我将 var 放在每个变量上的一个原因。(但这不是问题)
jQuery 答案:
var box = $('#grid > li');
var box_arr = [];
box.each(function() {
box_arr.push($(this).data('id'));
});
console.log(box_arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="grid" class="clearfix">
<li class="a" data-id="1"></li>
<li class="b" data-id="2"></li>
<li class="c" data-id="3"></li>
<li class="d" data-id="4"></li>
<li class="e" data-id="5"></li>
<li class="f" data-id="6"></li>
<li class="g" data-id="7"></li>
<li class="h" data-id="8"></li>
<li class="i" data-id="9"></li>
</ul>
注意:我一直对此投反对票,但它的编写方式box_arr = [];
默认window.box_arr = [];
为部分(我真的不关心这两种方式)
但更重要的是,也许_.els.grid.children()
这_
在问题中是未定义的,所以这是一条无用的行,也可能var box = undefined,
这就是 OP 代码实际上失败的原因。
更新为片段以显示代码确实有效。
HTML5 示例:
var box = document.getElementById('grid').children,
box_l = box.length,
i = 0,
box_arr = [],
numbersArray = []; // actual numbers
//put data in arrays
for (i; i < box_l; i++) {
box_arr.push(box[i].dataset.id);
numbersArray.push(box[i].dataset.id * 1);
}
console.log("Array:", box_arr, numbersArray);
<ul id="grid" class="clearfix">
<li class="a" data-id="1"></li>
<li class="b" data-id="2"></li>
<li class="c" data-id="3"></li>
<li class="d" data-id="4"></li>
<li class="e" data-id="5"></li>
<li class="f" data-id="6"></li>
<li class="g" data-id="7"></li>
<li class="h" data-id="8"></li>
<li class="i" data-id="9"></li>
</ul>
没有 jQuery:
var box = document.getElementById('grid').children,
box_l = box.length,
i = 0,
box_arr = [];
//console.log(box, box_l);
//create array of all box datas
for (i; i < box_l; i++) {
box_arr.push(box[i].getAttribute('data-id'));
}
console.log("Array:", box_arr);
<ul id="grid" class="clearfix">
<li class="a" data-id="1"></li>
<li class="b" data-id="2"></li>
<li class="c" data-id="3"></li>
<li class="d" data-id="4"></li>
<li class="e" data-id="5"></li>
<li class="f" data-id="6"></li>
<li class="g" data-id="7"></li>
<li class="h" data-id="8"></li>
<li class="i" data-id="9"></li>
</ul>