перенос каждого флажка выбранных данных в массив

#javascript #jquery

#javascript #jquery

Вопрос:

Я пытаюсь ввести значение каждого значения флажка внутри массива, но каждый раз он вводит одни и те же данные дважды или столько же флажков, которые я выбираю, если я выбираю 3 флажка, а последняя проверка имеет значение 2, поэтому он вводит 3 в массив 3 раза и не сохраняет значение двух других

Код Jquery:

 $('#data_table').append("<tr>" "<td><input type='checkbox' class='checkbox' name='check' id='checked_box" j "' value='" time " 'onclick='myFunction(this)' ></td>"  "<td>" sites.siteName  "</td>"  "<td>"   values.deviceName   "</td>"   "<td>"   values.count   "</td>"    "<td>"   parseFloat(time).toFixed(2)   " Min"    "</td>"   "</tr>");
  

Код Javascript:

 var check_id=e.getAttribute('id');
var time = document.getElementById(check_id).value;
var values = [];
 for(var j=0 ; j<time.length ; j  ){
    if(checkboxes[j].checked){
      values.push(time);
    }
  }
 console.log(values);
  

Я просто хочу получить значения флажка, сложить их и показать
итого, но, как я уже упоминал, он отправляет одни и те же данные столько раз, сколько я
установите флажок

Пожалуйста, решите эту проблему для меня, любая помощь будет очень ценной……

Ответ №1:

Это потому, что вы вводите time в массив, который является значением установленного флажка, а не значениями каждого флажка в отдельности.

Вам нужно будет изменить свой код, чтобы установить time в цикле, а не за его пределами. Опять же, я не уверен, что вы пытаетесь с этим сделать, поэтому мне пришлось сделать некоторые предположения, а также внести несколько изменений, чтобы заставить это работать так, как, я думаю, вы этого хотите.

 var time = new Date().getSeconds();
var values = [{deviceName: "laptop"},
{deviceName: "desktop"},
{deviceName: "tablet"},
{deviceName: "cell"},
{deviceName: "fablet"}];

var sites = [{siteName: "StackExchange"},
{siteName: "Google"},
{siteName: "AltaVista"},
{siteName: "AskJeeves"},
{siteName: "InfoSeek"}];

for (var j = 0; j < values.length; j  )
{
$('#data_table').append("<tr>" "<td><input type='checkbox' class='checkbox' name='check' id='checked_box" j "' value='" time " 'onclick='myFunction(this)' ></td>"  "<td>" sites[j].siteName  "</td>"  "<td>"   values[j].deviceName   "</td>"   "<td>"   values.count   "</td>"    "<td>"   parseFloat(time).toFixed(2)   " Min"    "</td>"   "</tr>");
}

function myFunction(e)
{
var checkboxes = $(e).closest('form').find(':checkbox');
var values = [];

 for(var j=0 ; j<checkboxes.length ; j  ){
    if(checkboxes[j].checked){
      values.push(checkboxes[j].value);
    }
  }
 console.log(values);
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<table id='data_table'></table>
</form>