Reputation: 405
I have an image array images having four random images,
I want to change the background-image in style of css of class contents using javascript.
for that i have created buildimage and changeImage and on onclick tried to change it .
How can i achieve it?
var images = ['https://picsum.photos/200/300/?random', 'https://picsum.photos/200/300/?random', 'https://picsum.photos/200/300/?random'];
var index = 0;
function buildImage() {
var img = document.createElement('img');
img.src = images[index];
document.getElementById('content').style.background - image = (img);
}
function changeImage() {
var img = document.getElementById('content').getElementsByTagName('img')[0];
index++;
index = index % 4; // This is for if this is the last image then goto first image I have 4 images so I've given 4 change accordingly
img.src = images[index];
}
.contents {
width: 100px;
height: 100px;
border: 2px solid #FF0000;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</style>
</head>
<body onload="buildImage();">
<div class="contents" id="content"></div>
<button onclick="changeImage()">NextImage</button>
</body>
</html>
Upvotes: 3
Views: 6980
Reputation: 2065
Problem :
img
tag to apply background-image
in
CSS Style Solution : You need to apply image path between
URL()
just like normal CSS background image applies
Check below code :
var images = ['https://picsum.photos/200/300/?random', 'https://picsum.photos/200/300/?random', 'https://picsum.photos/200/300/?random'];
var index = 0;
function buildImage() {
document.getElementById('content').style.backgroundImage = 'url('+images[index]+')';
}
function changeImage() {
index++;
if (index >= images.length) index = 0;
document.getElementById('content').style.backgroundImage = 'url(' + images[index] + ')';
}
.contents {
width: 200px;
height: 200px;
border: 2px solid #FF0000;
}
<div class="contents" id="content"></div>
<button onclick="changeImage()">NextImage</button>
Upvotes: 4
Reputation: 12010
Variable/property names can't have hyphens in them (the interpreter would see that as "subtraction", but that wouldn't make sense). The corresponding property for background-image
in the JavaScript DOM API is backgroundImage
:
function buildImage() {
var img = document.createElement('img');
img.src = images[index];
document.getElementById('content').style.backgroundImage = (img);
}
Upvotes: 2
Reputation: 1326
Change
document.getElementById('content').style.background - image = (img);
to:
document.getElementById('content').style.backgroundImage = (img);
in js, you must change first character after -
to upper case.
for example:
in css: border-style
in js: borderStyle
Upvotes: 1