You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.9 KiB
117 lines
3.9 KiB
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>V povětří</title>
|
|
<style>
|
|
.letadlo {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 1fr);
|
|
grid-template-rows: repeat(2, 1fr);
|
|
}
|
|
|
|
.letadlo > div {
|
|
border: 1px solid gray;
|
|
}
|
|
|
|
.letadlo > div:hover {
|
|
background-color: chartreuse;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.sedadlo-vyber {
|
|
background-color: aquamarine;
|
|
}
|
|
|
|
.letadlo > div.sedadlo-vyber:hover {
|
|
background-color: aquamarine;
|
|
}
|
|
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<form action="">
|
|
<label for="volba-tridy">Volba třídy</label>
|
|
<select name="trida" id="volba-tridy">
|
|
<option value="E">Ekonomická</option>
|
|
<option value="B">Business</option>
|
|
</select>
|
|
<label for="pocet-cestujicich">Počet cestujích</label>
|
|
<input name="pocetCestujici" id="pocet-cestujicich" value="1" type="number" min="1" max="9" step="1">
|
|
|
|
<div class="letadlo">
|
|
<div>B1</div>
|
|
<div>B2</div>
|
|
<div>B3</div>
|
|
<div>B4</div>
|
|
<div>E1</div>
|
|
<div>E2</div>
|
|
<div>E3</div>
|
|
<div>E4</div>
|
|
</div>
|
|
</form>
|
|
|
|
<div id="report">
|
|
<p>třída: <span id="zvolena-trida">E</span></p>
|
|
<p>cestujících: <span id="zvoleny-pocet">1</span></p>
|
|
<p>sedadla: <span id="zvolena-sedadla">není vybráno</span></p>
|
|
</div>
|
|
|
|
<script>
|
|
function resetSedadel() {
|
|
for (let index = 0; index < sedadla.length; index++) {
|
|
const element = sedadla[index];
|
|
element.classList.remove("sedadlo-vyber");
|
|
}
|
|
}
|
|
|
|
let sedadla = document.querySelectorAll(".letadlo > div");
|
|
|
|
let volbaTridy = document.querySelector("#volba-tridy");
|
|
volbaTridy.addEventListener("change", function() {
|
|
resetSedadel();
|
|
let trida = document.querySelector("#zvolena-trida");
|
|
trida.innerText = this.value;
|
|
});
|
|
|
|
let pocetCestujicich = document.querySelector("#pocet-cestujicich");
|
|
pocetCestujicich.addEventListener("change", function() {
|
|
resetSedadel();
|
|
});
|
|
|
|
for (let index = 0; index < sedadla.length; index++) {
|
|
const seat = sedadla[index];
|
|
seat.addEventListener("click", function() {
|
|
let formdata = new FormData(document.querySelector("form"));
|
|
if (this.innerText.indexOf(formdata.get("trida")) == 0) {
|
|
let pocet = document.querySelectorAll(".sedadlo-vyber").length;
|
|
if (this.classList.contains("sedadlo-vyber")) {
|
|
this.classList.remove("sedadlo-vyber");
|
|
}
|
|
else {
|
|
if (pocet < formdata.get("pocetCestujici")) {
|
|
this.classList.add("sedadlo-vyber");
|
|
}
|
|
else {
|
|
alert("Počet sedadel zavisí na počtu cestujících.");
|
|
}
|
|
}
|
|
|
|
let vypis = document.querySelector("#zvolena-sedadla");
|
|
vypis.innerText = "";
|
|
let sedadla = document.querySelectorAll(".sedadlo-vyber");
|
|
for (let s = 0; s < sedadla.length; s++) {
|
|
const element = sedadla[s];
|
|
vypis.innerText += element.innerText;
|
|
if (s + 1 < sedadla.length) {
|
|
vypis.innerHTML += ", ";
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|