Ваш обработчик событий клика фактически запускается при каждом нажатии. Проблема в том, что вы генерируете случайное число только один раз, прежде чем произойдут какие-либо щелчки , и поэтому вы устанавливаете фоновое изображение один раз, а при дальнейших щелчках просто устанавливаете одно и то же изображение снова и снова.
Вы необходимо переместить генератор случайных чисел в обратный вызов щелчка, чтобы новое случайное число генерировалось при каждом нажатии.
Кроме того, не используйте свойство onclick
элемента для настройки обратного вызова. Хотя этот подход работает, он устарел, и вы должны использовать более надежный и стандартный метод .addEventListener()
для настройки событий.
Кроме того, ваш стиль в CSS настолько можно и использовать CSS классов.
Собрать все вместе:
// array of pictures
var fileNamesReactions = [
"angry1.jpg",
"angry2.jpg",
"angry3.jpg",
"angry4.jpg",
"angry5.jpg"
];
// Get your DOM references that you'll use repeatedly just once:
let backgroundElement = document.getElementById("reaction-background");
// randomize pictures
document.getElementById("angry").addEventListener("click", function() {
// You have to get a new random each time the click occurs.
var random = Math.floor(Math.random() * fileNamesReactions.length);
backgroundElement.style.background = "url(./img/reactions/angry/" + fileNamesReactions[random] + ")";
console.log(backgroundElement.style.background);
});
/* Use CSS classes as much as possible as they make code much simpler */
#reaction-background {
background-size:"contain";
background-repeat:"no-repeat";
}
<div class="btn-list">
<a id="angry">ANGRY</a>
<div id="reaction-background"></div>
</div>