在jQuery中计算一个x另一个

时间:2012-03-21 19:10:23

标签: javascript jquery

我得到了NaN。我怎么能这样做,并在每次更改数量时更新它?

$('input[name="qtybox"]').change(function(){
var price = parseInt($(this).text(), 10)
* parseFloat($(this).closest('#price').text(), 10);
$("#tPrice").html(price);
});
<td id="price">2.79</td>
<td id="qty-box"><input type="text" name="qtybox"></td>
<td id="tPrice"></td>

4 个答案:

答案 0 :(得分:1)

您是否正在寻找类似 jsFiddle example 的内容?

jQuery的:

$('input.qtybox').each(function() {
    $(this).keyup(function() {
        var price = $(this).parent().siblings('td#price').text();
        var qty = $(this).val();
        $(this).parent().siblings('td#tPrice').html(isNaN( ((price * qty).toFixed(2)) ) ? 0 : ((price * qty).toFixed(2)));
    })
})

答案 1 :(得分:0)

parseInt()评估为NaN。您正在尝试从空字符串中解析整数。

请提供更完整的代码示例;我相信问题是您在使用closest()时尝试使用find()

答案 2 :(得分:0)

表格单元格没有值。请改用text方法。

此外,将字符串2.79解析为整数将只为2提供。

parseFloat($(this).closest('#price').text())

答案 3 :(得分:0)

问题在于.closest()查找链条。为了减少复杂性,不要指定边界:

$('#tPrice').each(function(){
    var price = parseInt($('input[name="qtybox"]').val(), 10 * parseInt($('#price').val(), 10);
    $(this).html(price);
});

保留当前型号:

$('#tPrice').each(function(){
    var price = parseInt($(this).prevAll('input[name="qtybox"]').val(), 10 * parseInt($(this).prevAll('#price').val(), 10);
    $(this).html(price);
});

虽然你真的不应该限制ID选择器,除非你有充分的理由,因为如果你这样做就无法优化它。