I am trying to add a placeholder image in the paragraph tag. The users select an option and the photo is replaced by the one chosen. I have tried to add a photo as a valued on the first option but didn’t work. Any ideas please?
JavaScript
x
1
1
select { outline: none; width: 100%; padding: 10px 0; text-align: center;}
JavaScript
1
13
13
1
<select onchange="document.getElementById('preview2').src = this.value">
2
<option selected="selected" disabled="disabled">Select a finish</option>
3
<option value="/images/image1.jpeg">Chrome</option>
4
<option value="/images/image2.jpeg">Satin Chrome</option>
5
<option value="/images/image3.jpeg">Black</option>
6
<option value="/images/image5.jpeg" ">Brushed Brass</option>
7
<option value="/images/image6.jpeg "">Brushed Nickel</option>
8
<option value="/images/image7.jpeg" ">Powdercoated Gun Metal</option>
9
<option value="/images/image8.jpeg "">Gun Metal</option>
10
<option value="/images/image9.jpeg" ">Antique Brass</option>
11
<option value="/images/image10.jpeg "">Black Chrome</option>
12
</select><br />
13
<p><img id="preview2" alt="" /></p>
Advertisement
Answer
Just trigger the change and have the default on the first option:
JavaScript
1
12
12
1
window.addEventListener("DOMContentLoaded", () => { // when the page haas loaded
2
const sel = document.getElementById("imgSel");
3
const img = document.getElementById('preview2');
4
const changeImg = () => { // called when image needs to be changed
5
img.src = sel.value;
6
img.title = sel.value;
7
console.log(img.src); // for debugging
8
};
9
sel.addEventListener("change", changeImg); // better than inline event handler
10
changeImg(); // initialise
11
12
})
JavaScript
1
12
12
1
#imgSel {
2
outline: none;
3
width: 100%;
4
padding: 10px 0;
5
text-align: center;
6
}
7
8
img {
9
height: 100px;
10
width: 100px;
11
border: 1px solid black;
12
}
JavaScript
1
13
13
1
<select id="imgSel">
2
<option selected="selected" disabled="disabled" value="/images/default.jpg">Select a finish</option>
3
<option value="/images/image1.jpeg">Chrome</option>
4
<option value="/images/image2.jpeg">Satin Chrome</option>
5
<option value="/images/image3.jpeg">Black</option>
6
<option value="/images/image5.jpeg">Brushed Brass</option>
7
<option value="/images/image6.jpeg">Brushed Nickel</option>
8
<option value="/images/image7.jpeg">Powdercoated Gun Metal</option>
9
<option value="/images/image8.jpeg">Gun Metal</option>
10
<option value="/images/image9.jpeg">Antique Brass</option>
11
<option value="/images/image10.jpeg">Black Chrome</option>
12
</select><br />
13
<p><img id="preview2" alt="" /></p>