2012-12-21 233 views
1

我有一個數字值爲表格的表格。從表格單元格中添加值

我的目標是通過點擊表格單元格並獲取它們的值,但是隨着我點擊意願添加它們。它應該跟蹤總數並在單獨的div中顯示。

我已經編寫了處理點擊td的代碼,並添加了一個類,其中包括更改背景顏色,以便用戶可以查看到目前爲止點擊的內容。因爲正在增加課程,所以我使用live()

然後我想要檢查有新類的td(稱爲selecting)並將它們相加。

這是我到目前爲止的代碼,但是,首先它不把它們加起來,而是附加一個接一個,而且在一些奇怪的順序:

$(document).ready(function() { 
    total = ''; 

    $('td').click(function() { 
     $(this).toggleClass('selecting'); 
     $('.selecting').live({ 
      click: function() { 
       if ($('td').hasClass('selecting')) { 
        total += $(this).html(); 
       } 
      } 
     }) 
     $('#feedback').text(total); 
    }); 
}) 

一個subsquent步驟將是在再次點擊被點擊的td時,總和被減去再次單擊的單元格的值。因此,如果新點擊,添加,如果再次點擊,減法,但這就像是第二步,對我而言,首先要做的一切都太難了。

+1

另外,不要使用'live'。 Live的文檔引用如下:「從jQuery 1.7開始,.live()方法已被棄用,使用.on()來附加事件處理函數,老版本的jQuery用戶應該優先使用.delegate() 「。請參閱http://api.jquery.com/live/ –

+0

另一方面注意:在聲明變量時使用'var'。如果你不這樣做,你的變量將隱含地變成全局變量。 –

回答

0

試試這個:

$('td').click(function() { 
    var $td = $(this); 
    var total = 0; 
    $td.toggleClass('selecting'); 

    $(".selecting").each(function() { 
     total += parseInt($(this).text(), 10); 
    }); 

    $('#feedback span').text(total); 
}); 

Example fiddle

你會在代碼中看到,對於每個點擊它完全重新計算總,這否定了需要存儲的點擊之間的總使你可以減去點擊的值。它使邏輯變得更簡單。

此外,我已經刪除live()首先,因爲live()現在已被棄用,不應使用,其次,因爲你不需要使用它。

+0

令人印象深刻!我的帽子掉了!萬分感謝! – user1815822

1
total += +$(this).text(); 

當添加一個字符串到另一個字符串,你串聯。如果你想,你需要使用數字。 +將字符串更改爲數字。

另外,對於total = 0;,更改total = '';

+0

謝謝,這解決了一件重要的事情,我只是不知道如何把它放入數字。我會非常樂意提供有用的評論,但我甚至沒有15分的聲望,所以他們不讓我。 – user1815822

相關問題