質問の回答が受け入れられなかったため、更新されました。
これ:めちゃくちゃに見えます:(それぞれのコメントを参照してください)
var box = _.els.grid.children(), // what is "_.els.grid."? _ is undefined
box_l = box.length,
i = 0; //semi colon?
box_arr = []; //no var?
すべての変数にvarを設定する理由の1つ。(しかし、それは問題ではありません)
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 = [];
、グローバルJavaScript変数が良いアイデアであると誰かが考える場合に備えて指摘するだけです(私はそうしません)-これはこれのポイントであり、文体ではありません部分(私は実際にはどちらの方法も気にしません)
しかし、もっと重要なのは、おそらく_.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>