DIV Background Color bei Mouse-Enter zufällig ändern?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

dafür wirst du wohl nicht um javascript herum kommen. ist aber mit javascript alles andere als schwer. so könnte das dann in etwa dann aussehen:

https://jsfiddle.net/76bgc2xs/

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler, B. Sc. Informatik

Rolajamo 
Fragesteller
 09.10.2019, 15:48

Danke dir!
Wenn ich den Code seh versteh ich ihn auch, von 0 kann ich aber leider noch nicht programmieren.
Kann ich in dieser Zeile mehrere IDs verwenden:
const div = document.querySelector("div");

Denn ich hab mehrere Container auf die das angewendet werden soll, aber nicht auf alle.

0
Tyldu  09.10.2019, 15:57
@Rolajamo

du könntest diesen ganzen containern alle die selbe css klasse geben und dann alle mit

const colorChangeDivs = document.querySelectorAll(".color-change");

auswählen

dann musst du aber mit einer schleife durch die ganzen elemente durch iterieren und den onmouseenter listener für jede klasse setzten.

0
Rolajamo 
Fragesteller
 09.10.2019, 16:05
@Tyldu

Sorry nochmal, ich habs grad getestet und es funktioniert irgendwie nicht.
ich geb dem div das hier:
<div class="color-change">

Und Ersetzte
const div = document.querySelector("div");

durch
const colorChangeDivs = document.querySelectorAll(".color-change");

Aber danach funktioniert das Script nicht mehr. Mache ich etwas falsch?

0
regex9  09.10.2019, 16:13
@Rolajamo
dann musst du aber mit einer schleife durch die ganzen elemente durch iterieren und den onmouseenter listener für jede klasse setzten.
for (let i = 0; i < colorChangeDivs.length; ++i) {
  colorChangeDivs[i].addEventListener("mouseenter", function(evt) {
    // code, to set color for colorChangeDivs[i] ...
  });
}
1
Tyldu  09.10.2019, 16:18
@Tyldu

https://jsfiddle.net/v4b15gju/

kann man natürlich auch noch alles etwas ordentlicher machen aber ich denke man versteht warum es nicht funktioniert wenn du nur die eine zeile ersetzt

1

Um auf Nutzerevents reagieren zu können, benötigst du JavaScript.

Die Werte kannst du in ein Array packen:

const colors = [ "#FF8000", "#2E64FE", "#F5BCA9" ];

Dann hängst du einen Listener an das gewünschte HTML Element, ermittelst in diesem einen zufälligen Wert aus dem Array und setzt diesen dann für die Hintergrundfarbe:

<div id="element">Some text</div>
<script>
  document.getElementById("element").addEventListener("mouseenter", function(evt) {
    let randomColor = colors[Math.floor(Math.random() * colors.length)];
    evt.currentTarget.style.backgroundColor = randomColor;
  });
</script>

Demo