Моя проблема относится только к браузеру Safari.jQuery каждый цикл не увеличивается на сафари
У меня есть сетка с 28 колоннами. Первый столбец содержит имена, а остальные 27 - каждую неделю в течение первых 6 месяцев года с семью маленькими столбцами внутри каждого, представляющими день недели. Каждая строка представляет человека, а сетка подсвечивает, в какие дни люди работают или в отпуске (т. Е. Календарный календарь).
Я использую jQuery для прокрутки сетки и вычисления числа небольших столбцов (например, день недели), которые содержат определенное имя класса, которое идентифицирует, находится ли человек в отпуске. В нижней части сетки я добавляю общее количество на каждый день, показывая, сколько людей работает в этот конкретный день. Каждый цикл петли вертикально вниз по столбцу первого дня каждого человека и добавляет его в массив (т. Е. [5,0,0,0,0]) и повторяется в течение другого 4 дня в будний день (т. Е. [5, 4,5,5,0] перед тем, как перейти к следующему столбцу и повторить процесс. Это массив из 5, поскольку я не вычисляю выходные. В итоге у меня 27 массивов. Затем я перехожу в другой цикл и добавить значения массива на каждый день, которые являются итоги.
function CalculateTotalWorkersPerDay_Name() {
//Count number of month columns which contains the weeks
var tdCount = $(".halfYear .outertr:nth-child(2) td.outer").length;
var sum = 0;
var count;
var toolTipContent;
//iterate based on the amount of date columns
for (count = 0; count < tdCount; count++) {
var totals = [0, 0, 0, 0, 0];
function getTotals() {
var tdNum = count + 2; //represents 2nd child as the first is the name fíeld
//iterate over every direct tr
$(".halfYear tr.outertr").each(function() {
$(this).find(".outer:nth-child(" + tdNum + ") .inner tr td").each(function (j) {
if ($(this).hasClass("std") || $(this).hasClass("other")) {
sum += 1;
totals[j] += 1;
}
});
});
//Insert total values into html
$(".totalRow td.outer:nth-child(" + tdNum + ") td.totalSum").each(function (k) {
toolTipContent = util.tr("Mon: " + totals[0] + "</br>Tues: " + totals[1] + "</br>Wed: " + totals[2] + "</br>Thurs: " + totals[3] + "</br>Fri: " + totals[4],
"Mo: " + totals[0] + "</br>Di: " + totals[1] + "</br>Mi: " + totals[2] + "</br>Do: " + totals[3] + "</br>Fr: " + totals[4], "");
var splitNum = ("" + totals[k]).split("");
if (totals[k] != null) {
if (totals[k].toString().length == 2) {
$(this).append("<span style='display:block;'>" + splitNum[0] + "</span><span>" + splitNum[1] + "</span>");
}
else if (totals[k].toString().length == 3) {
$(this).append("<span style='display:block;'>" + splitNum[0] + "</span><span style='display:block;'>" + splitNum[1] + "</span><span>" + splitNum[2] + "</span>");
}
else {
$(this).append("<span style='display:block;'>" + totals[k] + "</span>");
}
}
$(".totalSumTable" + count + " ").attr("onmouseover", "Tip('" + toolTipContent + "', OFFSETY, 20)");
$(".totalSumTable" + count + " ").attr("onmouseout", "UnTip()");
});
console.log(totals);
}
getTotals(count);
};
}
метод работает только с сафари браузер, и я d'on't знаю, почему. В сафари я все еще получаю 27 массивы, но только первый массив (т. е. [0,8,8,8,7]) правильно показывает общее количество. Если кто-то может объяснить, является ли это проблемой для моего кода или проблемы с Safari, что было бы здорово и, конечно же, я могу предоставить дополнительную информацию по запросу. Надеюсь, мой код и проблема достаточно ясны в этот момент, поскольку я действительно не понимаю, что проблема, кроме каждого цикла.
Цифры на изображениях показаны вертикально из-за ограничений по пространству (т. Е. 11 равно 1 под 1).
Update: Если я запустить функцию второй раз в консоли, он показывает правильные данные. Когда я отлаживаю код, он также дает правильные данные. Возможно, это связано с тем, когда вызывается функция.
Обновление 2: В каждом цикле ниже комментария «Вставить суммарные значения в HTML», переменная K не приращение что приводит только к первому значению индекса в массиве итоговых будучи добавленным в каждом общей сложности.
Хорошо. Итак, какая отладка вы сделали? У Safari есть встроенный отладчик, который вы можете использовать для перехода через код, проверки значений переменных, следовать логике ... –
В настоящее время я отлаживаю, но я хотел выяснить, есть ли очевидная причина, по которой он не работайте с Safari, о котором я не знаю. –