Появление одного из нескольких изображений в зависимости от выпавшего числа
Есть JS скрипт, который получает рандомное число и в зависимости от выпавшего числа выводит картинку в блок.
HTML код:
<div id="block">
<a href="#"><img id="pic1" src="pic1.jpg"></a>
<a href="#"><img id="pic2" src="pic2.jpg"></a>
<a href="#"><img id="pic3" src="pic3.jpg"></a>
</div>
JS код:
<script type="text/javascript">
var i = Math.random();
i = 3 * i;
i = Math.floor(i);
console.log(i);
if (i==1) {
document.getElementById("pic1").style.display = 'block';
}
else if(i==2){
document.getElementById("pic2").style.display = 'block';
}
else if(i==3){
document.getElementById("pic3").style.display = 'block';
}
else{
document.getElementById("pic3").style.display = 'block';
}
</script>
CSS код:
#pic1{
margin: 0 auto;
width: 300px;
height: 200px;
display: none;
}
#pic2{
margin: 0 auto;
width: 300px;
height: 200px;
display: none;
}
#pic3{
margin: 0 auto;
width: 300px;
height: 200px;
display: none;
}
При запуске кода, в консоли браузера выводится ошибка - Uncaught TypeError: Cannot read property 'style' of null.
В чем заключается и как решить данную проблему?
Ответы (2 шт):
Автор решения: humster_spb
→ Ссылка
Ваш код работает, ошибок нет:
var i = Math.random();
i = 3 * i;
i = Math.floor(i);
console.log(i);
if (i==1) {
document.getElementById("pic1").style.display = 'block';
}
else if(i==2){
document.getElementById("pic2").style.display = 'block';
}
else if(i==3){
document.getElementById("pic3").style.display = 'block';
}
else{
document.getElementById("pic3").style.display = 'block';
}
#pic1, #pic2, #pic3{
margin: 0 auto;
width: 300px;
height: 200px;
display: none;
}
<div id="block">
<a href="#"><img id="pic1" src="https://avatars.mds.yandex.net/get-pdb/2362009/242fe18c-29cc-490f-8afe-b74cfbe729eb/s1200" alt="Картинка 1"></a>
<a href="#"><img id="pic2" src="https://avatars.mds.yandex.net/get-pdb/49816/3bf76474-806b-4ccd-94d0-f5506bad867c/s1200" alt="Картинка 2"></a>
<a href="#"><img id="pic3" src="https://avatars.mds.yandex.net/get-pdb/2846431/c42332fc-e861-4564-bd12-90b00524531a/s1200" alt="Картинка 3"></a>
</div>
Автор решения: Aziz Umarov
→ Ссылка
Ошибка только в том что скрипт загрузился раньше чем рендер DOM элементов. Закиньте скрипт в конец документа