В javascript вы объединяете строки, используя +
, но вам здесь это даже не нужно. Я бы также использовал parseInt для извлечения значений. Всего и продавцы также должны быть инициализированы. Наконец, каждый из них даст вам индекс в качестве аргумента, поэтому ваш счетчик не нужен.
Редактировать : Примечание. Я изменил присвоение массиву returnDb. Ваш оригинал присваивает массив, содержащий массив значений, каждому элементу массива в returnDb. Новый код назначает объект с тремя свойствами (state, num, email) каждому элементу в returnDb. Возможно, ваш оригинал был верным - я не знаю, как вы его используете - но я думаю, что объектный подход в большинстве случаев более применим.
var returnDb = new Array();
var returnState = '';
var returnNum = '';
var returnEmail = '';
var total = 0;
var vendors = 0;
$("input:checked").each(function(i) {
var value = parseInt( $(this).attr("title") );
var value_vendors = parseInt( $(this).attr("title") );
// These are causing my script to stop
returnState = $(this).closest('tr').find('td:eq(1)').text();
returnNum = $(this).closest('tr').find('td:eq(2)').text();
returnEmail = $(this).closest('tr').find('td:eq(3)').text();
//returnDb[i] = [[returnState, returnNum, returnEmail]];
returnDb[i] = { state: returnState, num: returnNum, email: returnEmail };
total += value;
vendors += value_vendors;
});