I'm making a portfolio website and want to make a hero section with transitioning images using SetInterval every few seconds. I tried this:
Do note that I placed my background image in CSS instead, not as an img in HTML.
var images = [
'https://via.placeholder.com/728x90.png?text=slide1',
'https://via.placeholder.com/728x90.png?text=slide2',
'https://via.placeholder.com/728x90.png?text=slide3',
'https://via.placeholder.com/728x90.png?text=slide4',
];
var container = document.getElementById('hero');
var i = 0;
setInterval(function() {
var newImg = "url('" + images[i] + "')"
// console.log(newImg);
container.style.background = newImg;
i = i + 1;
if (i == images.length) {
i = 0;
}
}, 1000);
#hero {
height: 100vh;
width: 100%;
background: linear-gradient(rgba(0, 0, 0, 0.342), rgba(0, 0, 0, 0.342)), url('https://via.placeholder.com/728x90.png?text=slide1') fixed no-repeat center / cover;
color: #fff9ff;
transition: opacity 1s;
opacity: 1;
}
<section id="hero">
<div class="heroContainer">
<div id="info">
<h1>Lorem Ipsum</h1>
<h2>Lorem ipsum.</h2>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis nesciunt excepturi quos obcaecati incidunt voluptatem ipsam sunt ipsum, autem deleniti cupiditate molestias quis unde quae totam porro dicta</p>
<a id="heroButton" href="#">Contact Me</a>
</div>
</div>
The image didn't transition, and I got these error:
url('undefined')
main.js:70 Uncaught TypeError: Cannot set properties of undefined (setting 'background')
Anyone knows why? I would like to continue using SetInterval btw!