Как лучше всего передать IMG SRC в такой массив, как:
var images = ['img1.png', 'img2.png', img3.png'];
<div class = "cc">
<img class='content-image' src = "./img1.png" alt = "">
<img class='content-image' src = "./img2.png" alt = "">
<img class='content-image' src = "./img3.png" alt = "">
<img class='content-image' src = "./img4.png" alt = "">
<img class='content-image' src = "./img5.png" alt = "">
</div>
Пробовали это:
var images = []; const interactImg2 = document.querySelector('.cc'); [...interactImg2.querySelectorAll('img[src]')].forEach(img => images.push(new Image('img[src]')));
Невозможно получить SRC, но элемент отображается как (Image1, Image2, Image3).



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


var images = [];
const interactImg2 = document.querySelector(".cc");
[...interactImg2.querySelectorAll("img[src]")].forEach((img) =>
images.push(img.getAttribute('src'))
);
Попробуйте этот код. Если у вас возникнут какие-либо проблемы в дальнейшем, свяжитесь со мной.
Не могли бы вы проверить и это? stackoverflow.com/questions/78461926/…
var images = [];
const interactImg2 = document.querySelector('.cc');
[...interactImg2.querySelectorAll('img[src]')].forEach(img => images.push(img.getAttribute('src')));
Вы можете использовать составной селектор CSS и регулярное выражение для извлечения имен файлов изображений. Если вам нужны полные пути к изображениям, просто верните src без регулярных выражений.
const images = [...document.querySelectorAll(".cc img[src]")].map(({src}) => src.match(/[^/]+$/)?.[0]);
console.info(images)<div class = "cc">
<img class='content-image' src = "./img1.png" alt = "">
<img class='content-image' src = "./img2.png" alt = "">
<img class='content-image' src = "./img3.png" alt = "">
<img class='content-image' src = "./img4.png" alt = "">
<img class='content-image' src = "./img5.png" alt = "">
</div>Я почти уверен, что это тоже сработает, но в другом ответе отмечено как решение, так как мне нужно было знать, чего мне не хватает. Спасибо!
Используйте querySelectorAll, чтобы выбрать все изображения, и либо цикл forEach, либо map, чтобы создать массив:
const Images = document.querySelectorAll('.cc img');
let array = [];
Images.forEach(image => {
array.push(image.src);
})
console.info(array);<div class = "cc">
<img class='content-image' src = "./img1.png" alt = "">
<img class='content-image' src = "./img2.png" alt = "">
<img class='content-image' src = "./img3.png" alt = "">
<img class='content-image' src = "./img4.png" alt = "">
<img class='content-image' src = "./img5.png" alt = "">
</div>Попробуйте, это 100% работает
var images = [];
const interactImg2 = document.querySelector('.cc').children;
let img;
for(let i = 0;i<interactImg2.length;i++){
img = interactImg2[i].getAttribute('src').substr(2);
images.push(img);
}
это не сработает, если один дочерний элемент не является изображением. вам также не нужно использовать getAttribute для выбора источника.
Используйте приведенный ниже код, он также работает:
<html>
<body>
<div class = "cc">
<img class='content-image' src = "./img1.png" alt = "">
<img class='content-image' src = "./img2.png" alt = "">
<img class='content-image' src = "./img3.png" alt = "">
<img class='content-image' src = "./img4.png" alt = "">
<img class='content-image' src = "./img5.png" alt = "">
</div>
<script>
document.addEventListener('DOMContentLoaded', (event) => {
console.info('DOM fully loaded and parsed');
var images = [];
var imgElements = document.getElementsByClassName('content-image');
for (var i = 0; i < imgElements.length; i++) {
console.info('img' + i + ' :: ', imgElements[i]);
images.push(imgElements[i].src);
}
console.info('img :: ', images);
});
</script>
</body>
</html>
let images = [...interactImg2.querySelectorAll('img[src]')].map(img => img.src);