у меня есть следующая проблема, у меня есть таблица, которая наполняется с несколькими array, которые, дав ему click в кнопке, перемещают стоимость к другой таблице, до сих пор все добро, проблема, - когда я хочу снять стоимость (есть кнопка в каждой линии таблицы), выйдя ему click на стоимость, я могу удалять, но если есть 3 элемента и я удаляю первого, таблица оставляет себе ширину (length) 0 - как будто он удалял все следующие, такие реестры, если я удаляю 2-ой реестр, удаляются следующие, я оставляю им часть кода:
<script type="text/javascript">
var cont=0;
var total=0;
var arr_canti=[];
var arr_id_bodega_producto=[];
var arr_precio = [];
var arr_subtotal = [];
var v_id_bodega_producto = 0;
var v_producto = "";
var v_existencia = 0;
var v_pre1 = 0;
var v_pre2 = 0;
var v_pre3 = 0;
var v_pre4 = 0;
var v_pre0 = 0;
var v_canti = 0;
var v_precio = 0;
var v_id_del = 0;
$(document).ready(function(){
$('.agregar_fila').click(function(){
document.getElementById('caja3').style.display='block';
v_id_bodega_producto = $(this).parent().parent().find('input#val_id_bodega_producto').attr('value');
v_producto = $(this).parent().parent().find('input#val_producto').attr('value');
v_existencia = parseInt($(this).parent().parent().find('input#val_existencia').attr('value'));
v_pre1 = $(this).parent().parent().find('input#val_pre1').attr('value');
v_pre2 = $(this).parent().parent().find('input#val_pre2').attr('value');
v_pre3 = $(this).parent().parent().find('input#val_pre3').attr('value');
v_pre4 = $(this).parent().parent().find('input#val_pre4').attr('value');
v_pre0 = $(this).parent().parent().find('input#val_pre_farm').attr('value');
$('#pre_producto').val(v_producto);
$('#pre_existencia').val(v_existencia);
$('#desc1').html(v_pre1);
$('#desc2').html(v_pre2);
$('#desc3').html(v_pre3);
$('#desc4').html(v_pre4);
$('#desc0').html(v_pre0);
$('#des0').val(v_pre0);
$('#des1').val(v_pre1);
$('#des2').val(v_pre2);
$('#des3').val(v_pre3);
$('#des4').val(v_pre4);
});
});
function quitar(){
v_id_del = $(this).parent().parent().find('td:eq(0)').text();
/*arr_canti.splice(v_id_del,1);
arr_precio.splice(v_id_del,1);
arr_id_bodega_producto.splice(v_id_del,1);
arr_subtotal.splice(v_id_del,1);
$(this).parent().parent().remove();*/
//$(this).parent().parent().empty();
alert("el id es "+v_id_del);
}
$(document).ready(function(){
$('.quitar_fila').click(function(){
alert("hizo click");
//quitar();
});
});
$(document).ready(function(){
$('#btn_agr').click(function(){
agregar();
});
});
function agregar(){
v_canti = $('#canti').val();
v_precio = $("input[name='descuento']:checked").val();
//alert("los valores son v_canti: "+v_canti+" id: "+v_id_bodega_producto+" v_precio: "+v_precio+" contador "+cont+" v_existencia "+v_existencia+" total "+total);
if(v_canti>0 && v_canti<=v_existencia)
{
arr_canti.push(v_canti);
arr_precio.push(v_precio);
arr_id_bodega_producto.push(v_id_bodega_producto);
arr_subtotal.push(arr_canti[cont]*arr_precio[cont]);
total+=arr_subtotal[cont];
var fila = '<tr id="no_fila'+cont+'" name="filas[]" "><td style="display:none;">'+cont+'</td><td>'+arr_canti[cont]+'</td><td>'+v_producto+'</td><td>'+arr_subtotal[cont]+'</td><td><a href="#" class="quitar_fila"><i class="fas fa-minus-square" style="font-size:50px; color: #c23235;"></i></a></td></tr>';
$('#articulo3').append(fila);
cont++;
document.getElementById('subtotal').value = total;
$('#caja3').hide();
}
else{
alert("Cantidad Invalida");
}
}
$(document).ready(function(){
$('#btn_bor').click(function(){
$('#caja3').hide();
});
});
</script>
Спасибо за комментарии, возможно для больше объяснения, я не хочу удалить только стоимость, храню стоимость в array и потом показываю их в inputs (это опциональное, но если я хочу их в таблице) тогда, помимо снимания стоимости в array, нуждаюсь в том, чтобы снять Вашу соответствующую линию (со всем и td)
не, поскольку это точно твоя структура, но я оставляю тебе пример, как ты обрезал перемещать стоимость array и Вашей соответствующей линии.
var array = [
["1","dato numero 1"],
["2","dato numero 2"],
["3","dato numero 3"],
["4","dato numero 4"],
["5","dato numero 5"],
["6","dato numero 6"],
["7", "dato numero 7"],
["8", "dato numero 8"],
["9", "dato numero 9"]
];
for (i = 0; i < array.length; i++){
$("#tabla").append("<tr><td>"+ array[i][0]+"</td><td>"+ array[i][1]+"</td><td><button type='button' onclick='remove(event)'>remover</button></td></tr>");
}
function remove(e) {
var tr = $(e.target).closest("tr");
if( $(tr).index() >= 0) {
array.splice($(tr).index(),1);
}
$(tr).remove();
console.log(JSON.stringify(array));
}
table,th,td {
border: 1px solid black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="tabla">
</table>
, когда ты добавляешь твои подмостки dinamicamente, он добавляет кнопку, у которой был бы признак onclick
, и которая назвала она funciГіn remove()
и произошла с ним как аргумент event
: <button type="button" onclick="remove(event)">borrar</button>
в ней funciГіn remove()
, который является той, которая интересует нас, мы делаем следующее:
.closest()
, что то, что он делает, состоит в том, чтобы искать имя tag более близкого, что recive как аргумент, в этом случае мы перемещаем его TR
, и приносит нас прямо к Вашему отцу. .index()
splice
говоря ему, чтобы он удалил элемент, который находится в индексе и такой, как второй аргумент, мы говорим ему, чтобы он удалил только 1 элемент, тогда это у нас осталось бы так сейчас нам не хватает array.splice(indice,1)
tr
, я одеваю, что в шаге номер 1 мы сохраняем элемент в переменной tr, мы используем ее funciГіn .remove()
и его у нас осталось бы $(tr).remove()
я надеюсь, что он может помогать в кого-то