Javascript 具有多个div的Get.attr()
我试图从同一类的多个div中获取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
数据元素。以下是我到目前为止得到的代码:
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);