简体   繁体   English

如何获取多个div中的所有数组元素值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM