Всем привет, не подскажете почему счетчик counter не увеличивается при инкременте? По идее ведь у меня три картины и трижды должен сработать
function preloadImages(sources) {
let counter = 0;
for (const source of sources) {
let img = document.createElement('img');
img.onerror = img.onload = () => {
counter++;
}
img.src = source;
}
console.log(counter);
}
let sources = [
"https://en.js.cx/images-load/1.jpg",
"https://en.js.cx/images-load/2.jpg",
"https://en.js.cx/images-load/3.jpg"
];
preloadImages(sources);
При проверке внутри цикла переменная увеличивается, но не выходит будто из этого цикла. Срабатывает если функцию отдельно написать для события. Событие не позволяет изменять значение внешней переменной или что?
ну по идее у вас все ок, просто загрузка изображений - код асинхронный, поэтому вы видите значение счётчика еще до того, как изображения были загружены (или произошла ошибка)
let counter = 0;
function preloadImages(sources) {
for (const source of sources) {
let img = document.createElement('img');
img.onerror = img.onload = () => {
counter++;
}
img.src = source;
}
}
let sources = [
"https://en.js.cx/images-load/1.jpg",
"https://en.js.cx/images-load/2.jpg",
"https://en.js.cx/images-load/3.jpg"
];
preloadImages(sources);
console.log("счётчик сразу после завершения выполнения функции:", counter);
setTimeout(() => console.log("счетчик по таймеру:", counter), 1000);
async function preloadImages(links) {
let counter = 0;
async function createImage(link) {
const img = document.createElement('img');
img.src = link;
return new Promise((resolve, reject) => {
img.onload = () => {
document.body.appendChild(img);
resolve();
};
img.onerror = (e) => reject(e);
});
}
for (const link of links) {
try {
await createImage(link);
counter++;
console.log(counter, link);
} catch (e) {
console.log('Ошибка загрузки изображения - ', link);
}
}
return counter;
}
const links = [
"https://en.js.cx/images-load/1.jpg",
"https://en.js.cx/images-load/2.jpg 123",
"https://en.js.cx/images-load/3.jpg"
];
preloadImages(links).then(count => {
console.log('Изображений загружено: %s/%s', count, links.length);
});
Подскажите, в чём может быть проблема? Не округляются десятичные(
Есть массив из трех целых элементов, один из элементов отличается от других, остальные одинаковы, нужно сравнить элементы, и вывести индекс...
Есть парковка, на ней определенное количество мест для легковых машин и для грузовых машин