У меня есть сетка ящиков (3x2), которую я бы хотел обновить в цикле, учитывая большой массив значений rgb, представляющих изменяющиеся цвета с течением времени. Пример одного элемента массива выглядит следующим образом:JS Постоянное обновление цветов CSS-фона в сетке - закрытие?
[[99,58221354166666, 99,20004050925925, +100,86330150462963], [+59,431727430555554, 58,59181712962963, +61,26002314814815], [+59,824817708333335, +58,83816550925926, +61,85647280092593], [+93,02857349537037, 95,04584201388889, +92,13913194444444], [ 48,46075810185185, +50,74021701388889, 46,878373842592595], [+84,57517939814815, +173,51900462962962, 62,35618923611111]]
ниже код обрабатывает значения RGB и все отлично. Каждый элемент массива соответствует «ящику» в сетке 3x2. К сожалению, у моей петли, похоже, есть проблема с закрытием, и я не могу понять это. Он только обновляет цвета сетки на последней итерации. Поэтому я переписал его, чтобы сохранить список функций, а затем называть их, но я не могу сказать, просто ли он выполняется так быстро, что я не вижу его или если он на самом деле не работает. Если я добавлю спать, скрипт будет зависать, и везде, где он зависает, он будет обновляться в течение одного момента, пока я не нажму кнопку продолжения. После чего он покажет мне последнее обновление (так что я перестал видеть последнее обновление, увидев два со скриптом, видимо, висящим).
c1 = $("#cell1");
c2 = $("#cell2");
c3 = $("#cell3");
c4 = $("#cell4");
c5 = $("#cell5");
c6 = $("#cell6");
var cells = [c1, c2, c3, c4, c5, c6];
$(document).ready(function() {
$.each(test, function(iGrid, grid) {
var ary_rgb = [];
var property = "background";
var updates = [];
$.each(grid, function (iBox, box) {
var r = Math.floor(box[0]).toString();
var g = Math.floor(box[1]).toString();
var b = Math.floor(box[2]).toString();
var rgb = 'rgb(' + r + ',' + g + ',' + b + ')';
updates[iBox] = function() { return cells[iBox].css(property, rgb); };
});
for (var i=0; i<updates.length;i++) {
updates[i]();
}
});
});
я потратил несколько часов, пытаясь получить эту работу и чтение SO и другие сайты закрытия, но я просто не могу видеть, что я делаю неправильно. Я могу опубликовать остальную часть html, если это необходимо.
Я не вижу здесь никаких проблем с закрытием. Трудно сказать, потому что это неполный фрагмент. И что такое 'test'? (здесь невозможно сказать). Кроме того, назначения 'c1' thru' c6' должны выполняться в обработчике '$ (document) .ready()'. Вы получите лучшую обратную связь, если бы вы могли создать runnable jsFiddle, который воспроизводит проблему. – meetamit
http://jsfiddle.net/rBLLc/2/ Это прокомментировало и то, как я изначально пытался. – cdownard