Diskuze: onclick event + array
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, v cykle for používaš "const", namiesto toho použi "let" a malo by to fungovať
To let určite nechaj a ešte si oprav v tom cykle
images[i].className = "fadeOut";
teraz by to už malo fungovať
Pořád to nejede (nebo teda jede, ale ne tak, jak bych chtěla)... Říkám si, jestli není chyba někde jinde, ale nic moc mě nenapadá.
Ahoj, v moderním JavaScriptu by ten kód měl vypadat asi nějak takto:
<!DOCTYPE html>
<html>
<head>
<title>Fade Out</title>
<meta charset="utf-8">
<style>
#button {
padding: 15px;
background-color: grey;
margin: 0 35%;
cursor: pointer;
}
img {
opacity: 1;
transition-duration: 3s;
}
.fadeOut {
opacity: 0;
}
</style>
</head>
<body>
<img class="hide" src="1.jpg">
<img src="2.jpg">
<img class="hide" src="3.jpg">
<p id="button">Click me!</p>
<script>
const images = document.getElementsByClassName('hide');
document.getElementById('button').addEventListener('click', () => {
for (let image of images)
image.setAttribute('class', image.getAttribute('class') + ' fadeOut');
});
</script>
</body>
</html>
A už by to mělo dělat to co chceš. Problém byl v tom, že změnou
atributu class
se rozbije to původní pole images. Standardně se
tam proto ta nová třída pouze přidává.
Kdyby jsi k tomu měla ještě nějaké dotazy, klidně se ptej.
Díky moc! A použití arrow function už je jen taková třešnička na dortu?
Ahoj, v tomhle případě ano, je to kratší než psát celé
function
.
Ovšem jsou situace kdy to tak být nemusí, protože arrow functions lépe
pracují s kontextem this
. K tomu se určitě během svého studia
JavaScriptu dopracuješ.
Zobrazeno 9 zpráv z 9.