Javascript 删除行后如何从html表中获取单元格的值?

Javascript 删除行后如何从html表中获取单元格的值?,javascript,jquery,html,Javascript,Jquery,Html,我有一个按钮,当我点击它时,它会在表中动态生成行,它还会生成一个按钮来删除该行。 我遇到的问题是,每次生成一行时,单元格的值在文本字段中求和,当我删除该行时,我需要将该单元格的值减去文本字段。 这就是为什么我需要在删除该单元格时获取其值 这是我在表格中生成动态行的按钮: <input type="button" name="agregar" id="agregar" value="Agregar" class="btn btn-primary"/> 为了能够执行此算术运算: 小计=

我有一个按钮,当我点击它时,它会在表中动态生成行,它还会生成一个按钮来删除该行。 我遇到的问题是,每次生成一行时,单元格的值在文本字段中求和,当我删除该行时,我需要将该单元格的值减去文本字段。 这就是为什么我需要在删除该单元格时获取其值

这是我在表格中生成动态行的按钮:

<input type="button" name="agregar" id="agregar" value="Agregar" class="btn btn-primary"/>
为了能够执行此算术运算: 小计=小计-价值


但是勇气这个领域是空白的。如何获取该单元格的值?

我在这里构建了一个最小的可验证样本,并在过程中发现了一些要点:

当表中有多行时,您可能会多次为“.eliminar”分配单击事件侦听器

我使用
.on()
将其更改为单个作业

你的
valor
判断错误。它应该是这样的

valor = $(this).closest('tr').find("td").eq(5).text();
var小计=0,总计=0;
$(函数(){
$(“#agregar”)。单击(函数(){
var productoId=$(“#productoId”).val();
var productodescripion=$(“#productodescripion”).val();
var productoPrecio=$(“#productoPrecio”).val();
var productoCantidad=$(“#productoCantidad”).val();
var productoIva=$(“#productoIva”).val();
总计=(产品利润*产品利润)-(产品利润*产品利润)*产品利润)/100;
小计=小计+总计;
美元(“#totalAPagar”).val(小计);
var presupuesto=''+
''+productoId+''+
“+productoDescripcion+”+
''+productoPrecio+''产品+
''+productoCantidad+''产品+
“+productoIva+”+
''+总计+''+
“eliminar”+
'';                
$(“#prespuestodetalle tbody”)。追加(prespuesto);
});
$('tbody')。在('click',.eliminar',function()上{
valor=$(this).closest('tr').find('td').eq(5).text();
$(此).parents(“tr”).fadeOut(“正常”),function(){
$(this.remove();
小计=小计-价值;
美元(“#totalAPagar”).val(小计);
});
});
});

id
说明。
precio
铁路超高。
伊娃
IDDescriptionPreciocontidaDivatotal
我忘了在表达式中放入.parents(“tr”)方法,如下所示:

 valor = $(this).parents("tr").find("td").eq(5).html();
我想我以前没有找到'td'选择器,因此首先我必须使用.parents('tr')转到父选择器,然后尝试找到'td'选择器,然后我使用html()方法而不是.text()方法。
现在我可以获得单元格的值。

尝试使用
text
而不是
val
。除此之外,请进行一些调试,并告诉我们值丢失的位置,即变量没有您期望的值时。在第二次单击事件中,我希望获取单元格“total”的值,但字段“valor”没有任何内容。您的意思是“没有任何内容”?当你记录它时,它有什么价值?我的意思是,当我在控制台中记录它时,它没有显示任何内容,但是我改为.val().text(),它在控制台中显示“undefined”。谢谢你,伙计,我很感激。您可以向我解释一下,在本例中,您使用单击事件的方式与我使用的方式有什么不同。当您使用
.on()
添加一个“委托”事件侦听器时,实际上是将一个侦听器分配给一个已存在的父元素。在本例中,表的
tbody
元素。事件侦听器查看指定类型的所有传入事件(此处为“单击”),并且仅当选择器(此处为“.eliminar”)也适合时才会激发,因此它仅在单击其中一个尚未创建的按钮时才会激发。您最初的方法可能会使事件侦听器因对单个元素的多个赋值而变得混乱。感谢您的解释,我对jQuery仍然不太了解。“jQuery攻击”在年轻的程序员中已经成为一种时尚。但我仍然认为,以预期的方式使用jquery所带来的可能性几乎是无限的,如果你做得对,你最终会得到紧凑且易于维护的代码。
valor = $(this).closest('tr').find("td").eq(5).text();
 valor = $(this).parents("tr").find("td").eq(5).html();