@Social_Killer:
Instrukcja for rozciąga się tylko na funkcję, w której jest zadeklarowana. W pierwszym argumencie setTimeout masz kolejną funkcję -- anonimową. Nie może tam być break, bo w tej funkcji nie ma instrukcji for. Instrukcja for jest w funkcji zewnętrznej.
Możesz zrobić coś takiego (wydzielenie funkcji dodającej jeden obrazek jest niezbędne; pisałem to z palca więc mogą być literówki):
var IMAGE_SRC_ARRAY = ['foo.jpg', 'bar.jpg', 'baz.jpg'],
IMAGE_TIMEOUT = 7000;
function loadAllImages(srcArray) {
for (var i = 0; i < srcArray.length; i++) {
loadImage(srcArray[i]);
}
}
function loadImage(src) {
var img = new Image();
img.src = src;
setTimeout(abortThisImage, IMAGE_TIMEOUT);
function abortThisImage() { // wydzieliłem tę funkcję dla czytelności
img.src = '';
// (ew. usuń img z DOM)
img = null;
// (ew. zrób to window.stop)
}
}
// i wywołanie:
loadAllImages(IMAGE_SRC_ARRAY);
Zauważ, że -- zależnie od tego co chcesz zrobić -- konieczna może być jedna rzecz. "Wyłączenie timeoutu" gdy obrazek zostanie załadowany. W takim wypadku możesz nie chcieć zmieniać jego src. A teraz to anulujemy ładowanie zawsze gdy minie 7 sekund, niezależnie od tego, czy obrazek się załaduje, czy nie.
Można to zrobić np. tak:
function loadImage(src) {
var img = new Image(),
abortTimeoutId = setTimeout(abortThisImage, IMAGE_TIMEOUT);
img.src = src;
img.onload = clearAbortTimeout;
function abortThisImage() {
// ...
}
function clearAbortTimeout() { // również -- wydzielona dla czytelności
clearTimeout(abortTimeoutId);
}
}