[英]How to get all array elements value in multiple div
How to get all array elements value in each div?如何获取每个div中的所有数组元素值? I try with my code but it seem value output is duplicate..
我尝试使用我的代码,但似乎值 output 是重复的。
Here is my html code.这是我的 html 代码。 https://jsfiddle.net/xvrp98wz/1/#&togetherjs=HzjPB5VztO
https://jsfiddle.net/xvrp98wz/1/#&togetherjs=HzjPB5VztO
<div class="parent">
<input name="sub[0]" data-date="2020-08-04" value="1">
<input name="sub[1]" data-date="2020-08-05" value="2">
<input name="sub[1]" data-date="2020-08-06"value="3">
</div>
<div class="parent">
<input name="sub[0]" data-date="2020-08-04" value="4">
<input name="sub[1]" data-date="2020-08-05" value="5">
<input name="sub[1]" data-date="2020-08-06"value="6">
</div>
<div class="parent">
<input name="sub[0]" data-date="2020-08-04" value="7">
<input name="sub[1]" data-date="2020-08-05" value="8">
<input name="sub[1]" data-date="2020-08-06"value="9">
</div>
and javascript和 javascript
var Items_parent = [];
var Items_sub = [];
$(".parent").each(function(e){
$("input[name^='sub']").each(function () {
var val = $(this).val();
var date = $(this).attr('data-date');
var item = {date : val};
Items_sub.push($(this).val());
});
Items_parent.push(Items_sub);
});
console.log(Items_parent);
Given the context of the question and the comment under it, it appears you're attempting to create a nested array of objects.鉴于问题的上下文及其下的评论,您似乎正在尝试创建一个嵌套的对象数组。 To do that you can use
map()
, like this:为此,您可以使用
map()
,如下所示:
let output = $('.parent').map((i, parent) => [$(parent).find('input').map((i, input) => ({ date: input.dataset.date })).get()] ).get(); console.log(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="1"> <input name="sub[1]" data-date="2020-08-05" value="2"> <input name="sub[1]" data-date="2020-08-06" value="3"> </div> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="4"> <input name="sub[1]" data-date="2020-08-05" value="5"> <input name="sub[1]" data-date="2020-08-06" value="6"> </div> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="7"> <input name="sub[1]" data-date="2020-08-05" value="8"> <input name="sub[1]" data-date="2020-08-06" value="9"> </div>
You can simply use one $.each
to get data-date
.您可以简单地使用一个
$.each
来获取data-date
。 Instead of .attr
you can also use .data
to get the dates of each input which are in the parent class.除了
.attr
,您还可以使用.data
来获取父级 class 中每个输入的日期。
Since its a bit unclear what you trying to store.
因为它有点不清楚你试图存储什么。 I have added a scenarios which considering your question.
我添加了一个考虑您的问题的场景。
You can choose what suits you best from the below three working demos
.您可以从以下三个工作
demos
中选择最适合您的。
Demo: Showing input value and relevant datadate of that input演示:显示输入值和该输入的相关数据日期
var Items_parent = []; $(".parent input").each(function(index, data) { //get date var date = $(this).data('date'); //name var value = $(this).val() //Push date var obj = {}; //Obj obj[value] = date //Push Items_parent.push(obj); }); console.log(Items_parent)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="1"> <input name="sub[1]" data-date="2020-08-05" value="2"> <input name="sub[1]" data-date="2020-08-06" value="3"> </div> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="4"> <input name="sub[1]" data-date="2020-08-05" value="5"> <input name="sub[1]" data-date="2020-08-06" value="6"> </div> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="7"> <input name="sub[1]" data-date="2020-08-05" value="8"> <input name="sub[1]" data-date="2020-08-06" value="9"> </div>
Demo: Showing each input date as {date: XXXX-XX-XX}演示:将每个输入日期显示为 {date: XXXX-XX-XX}
var Items_parent = []; $(".parent input").each(function(index, data) { //get date var date = $(this).data('date'); //Push date Items_parent.push({ date: date }); }); //All item console.log(Items_parent)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="1"> <input name="sub[1]" data-date="2020-08-05" value="2"> <input name="sub[1]" data-date="2020-08-06" value="3"> </div> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="4"> <input name="sub[1]" data-date="2020-08-05" value="5"> <input name="sub[1]" data-date="2020-08-06" value="6"> </div> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="7"> <input name="sub[1]" data-date="2020-08-05" value="8"> <input name="sub[1]" data-date="2020-08-06" value="9"> </div>
Demo: Showing each input as {sub[X]: XXXX-XX-XX}演示:将每个输入显示为 {sub[X]: XXXX-XX-XX}
If you want to get the name of the each input with its date then you do something like this.如果你想获得每个输入的名称及其日期,那么你可以这样做。
var Items_parent = []; $(".parent input").each(function(index, data) { //get date var date = $(this).data('date'); //name var name = $(this).attr('name'); //Push date var obj = {}; //Obj obj[name] = date //Push Items_parent.push(obj); }); console.log(Items_parent)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="1"> <input name="sub[1]" data-date="2020-08-05" value="2"> <input name="sub[1]" data-date="2020-08-06" value="3"> </div> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="4"> <input name="sub[1]" data-date="2020-08-05" value="5"> <input name="sub[1]" data-date="2020-08-06" value="6"> </div> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="7"> <input name="sub[1]" data-date="2020-08-05" value="8"> <input name="sub[1]" data-date="2020-08-06" value="9"> </div>
var Items_parent = []; var Items_sub = []; $(".parent input[name^='sub']").each(function () { var val = $(this).val(); var date = $(this).attr('data-date'); var item = {date: val}; Items_sub.push($(this).val()); }); Items_parent.push(Items_sub); document.write(Items_parent); console.log(Items_parent);
<div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="1"> <input name="sub[1]" data-date="2020-08-05" value="2"> <input name="sub[1]" data-date="2020-08-06"value="3"> </div> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="4"> <input name="sub[1]" data-date="2020-08-05" value="5"> <input name="sub[1]" data-date="2020-08-06"value="6"> </div> <div class="parent"> <input name="sub[0]" data-date="2020-08-04" value="7"> <input name="sub[1]" data-date="2020-08-05" value="8"> <input name="sub[1]" data-date="2020-08-06"value="9"> </div> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.