2011-07-21 69 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