【问题标题】:compute data from an array从数组计算数据
【发布时间】:2011-07-21 07:01:54
【问题描述】:

我有一个关于数组的(简单)问题。我正在尝试获取在 html 中输入的所有板英尺的总数。这是一个运行示例代码:click here

(感谢 AsKaiser 提供的代码)。

现在,我想要做的是,每次单击go 按钮时,它都会自动计算输入到该数组中的总板英尺。因此,每次我在该表单中输入内容并单击“go”时,数据将转到该数组,并且所有板英尺的总数将显示在下面的输入框中。当我向数组中添加数据时,它会不断变化。

我无法让它工作,并且总有一个 NaN 值。

【问题讨论】:

  • 对我有用,我只在字段为空或无效数据时得到 NaN
  • 是的,当然.. 但我想要的是每次我点击按钮 go,所有板脚的总和将显示在下面的输入框中。您再次输入一些数据并再次单击按钮 go,将更新下面的总数以及该数组中的所有 board_foot。

标签: javascript jquery arrays arraylist


【解决方案1】:

您的代码非常混乱。 plank_data 的意义何在?

你为什么不这样做呢,这样更有意义。

function Plank()
{
  var self = this;
  self.Number = 0;
  self.Thickness = 0;
  self.Width = 0;
  self.Length = 0;
  self.Quantity = 0;

  self.GetBoardFoot = function()
  {
    return (((parseFloat(self.Thickness) * parseFloat(self.Width) * parseFloat(self.Length) * parseFloat(self.Quantity)) / 12);
  }
}

var planks = [];
function AddPlank()
{
  var myPlank = new Plank();
  myPlank.Number = $('#plank_number').val();
  myPlank.Thickness = $('#thickness').val();
  myPlank.Width = $('#width').val();
  myPlank.Length = $('#length_t').val();
  myPlank.Quantity = $('#quantity').val();
  planks.push(myPlank);
}

function GetTotalBoardPlank()
{
  var total = 0;
  for (var i = 0; i < planks.length; i++)
    total += planks[i].GetBoardFoot();
  return total;
}

function Go()
{
  AddPlank();
  $('#board_foot').val(parseFloat(GetTotalBoardPlank()));
}

【讨论】:

  • 嘿,多亏了这个。但是你的代码真的让我很困惑。 :) 我只是坚持我的。谢谢分享。
  • 你应该花一些时间学习如何使用对象,它使代码变得清晰且语义相关。
【解决方案2】:

Is this what you are looking for?

plank_data = [];
$('#go').click(function() {

    var plankNum = parseFloat($('#plank_number').val() || 0.00),
        thick = parseFloat($('#thickness').val() || 0.00),
        width = parseFloat($('#width').val() || 0.00),
        length_t = parseFloat($('#length_t').val() || 0.00),
        quantity = parseFloat($('#quantity').val() || 0.00);

    //compute board foot
    board_foot = parseFloat((thick * width * length_t * quantity) / 12);

    // show board foot
    $('#board_foot').val(board_foot);

    var current_data = {};

    $('#plank_form input:text:not("#board_foot")').each(function() {
        var $this = $(this);
        current_data[$this.attr('id')] = parseFloat($this.val() || 0.00);
        $this.val('');
    });

    //this will push data/add data to array
    plank_data.push(current_data);

    var total = parseFloat(plankNum + thick + width + length_t + quantity);
    $('#total').val(total);
});

【讨论】:

  • 并非如此。在我的总输入框中,我希望只有在数据中输入的所有板脚的总和。您正在添加所有数据,而不是板脚。不过谢谢你的时间。
【解决方案3】:

【讨论】:

  • 你的代码很棒。这正是我想要的。感谢分享。顺便说一句,我已经投票给你了。不知道谁投了你的票。
猜你喜欢
  • 2013-09-14
  • 2018-05-01
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多