#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>