Javascript 具有多个div的Get.attr()

Javascript 具有多个div的Get.attr(),javascript,jquery,Javascript,Jquery,我试图从同一类的多个div中获取数据元素。以下是我到目前为止得到的代码: var dataArr = new Array(); $(".foo").each(function(){ for (i = 0; i < $(".foo").length; i++) { dataArr[i] = $(this).attr("data"); } }); $(".array").text(dataArr); var-dataArr=new-Array(); $(“.foo”).ea

我试图从同一类的多个div中获取
数据
元素。以下是我到目前为止得到的代码:

var dataArr = new Array();
$(".foo").each(function(){
    for (i = 0; i < $(".foo").length; i++) {
    dataArr[i] = $(this).attr("data");
}
});

$(".array").text(dataArr);
var-dataArr=new-Array();
$(“.foo”).each(函数(){
对于(i=0;i<$(“.foo”).length;i++){
dataArr[i]=$(this.attr(“数据”);
}
});
$(“.array”).text(dataArr);
此代码的问题在于,当您运行它时,它只存储数组每个索引上的最后一个
数据。我有一个jsfiddle来演示我要做的事情

试试这个:

//Create an empty array
var dataArr = [];

// Loop through all the div's
$(".foo").each(function (index) {

    // Push the data into the array
    dataArr.push($(this).attr("data"));
});

// open console to see the array
console.log(dataArr);

你想这么做吗

var dataArr = new Array();
$(".foo").each(function () {
    dataArr.push($(this).attr("data"));
});

$(".array").text(dataArr.join(","));

为什么在
每个
循环中都有
for
循环。。。。实际上,您根本不需要使用循环..使用
map()
使用HTML5数据属性的正确方法是
data something
。。您可以使用
data()
来获取该值,而不是
attr()

html

    <div class="foo" data-test="111"> Hello </div>
    <div class="foo" data-test="222"> World </div>
    <div class="array"></div>

您的
中有一个额外的for循环。每个
,您就可以开始了。下一次,请考虑在这里提问之前:“祝你好运,快乐编码!来吧为什么投反对票?@TamilVendhan不是我,但可能缺乏研究努力或有用性,这正是反对票所表明的。嗯,我不知道我能做
。每个(函数(I)东西,这就是为什么我把它放在那里两次。非常感谢你的答案!“格斯,当我们得到好的建议时,考虑不要在HTML中存储应用程序状态,你可以先有一个数据JavaScript数组,而不是在HTML中存储数据,每个单元格包含数字数据(顺便说一下数字)。还有一个指向DOM元素的链接。这样你就不必每次都查询你的DOM,而且你做得很好。保持你的表示层和业务逻辑分开,你就会成为一个快乐的露营者。我在提交之前反复检查你知道..新手;-)如果你想为这个(相当有趣的问题)提供一个解决方案,我可以建议你。地图?这似乎是一个理想的适合。在这里,我认为本机
Array.prototype.map.call(document.getElementsByClassName(“foo”),函数(e){returne.getAttribute(“data”);})
var dataArr =$(".foo").map(function(i,v){

   return $(this).data("test");

}).get();

$(".array").text(dataArr);