2011-07-21 32 views
0

我有关于数组的这个(简单)问题。我试图获得所有在html中输入的棋盘英尺的总数。这里有一个正在运行的示例代码:click here计算来自数组的数据

(感谢AsKaiser的那个代码)。

现在,我想要做的是每次点击go按钮时,它会自动计算输入到该阵列中的总电路板尺寸。因此,每次我输入这种形式的东西并点击开始,数据就会进入该阵列,并且所有电路板英尺的总数将显示在下面的输入框中。随着我将数据添加到阵列中,它会不断变化。

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

+0

对我的作品,我只得到NaN当字段为空或无效的数据,当然 –

+0

是的..但我想那是什么evrytime我点击按钮去,总所有电路板的脚将显示在下面的输入框中。你再次输入一些数据,然后再次点击按钮,下面的总数将被更新,并且该数组中的所有board_foot。 – jayAnn

回答

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())); 
} 
+0

嘿,谢谢你。但是你的代码真的让我困惑。 :)我只是坚持我的。感谢你的分享。 – jayAnn

+0

你应该花一些时间学习如何使用对象,它使真正清晰和语义相关的代码。 – BradLaney

0

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); 
}); 
+0

不是。在我的总输入框中,我只想要输入数据中的所有棋盘脚。您将添加所有数据,而不是电路板。但是,谢谢你的时间。 – jayAnn

+0

@jayAnn:更新了代码,应该为你做。 – Shef