Kezdőoldal » Számítástechnika » Weblapkészítés » Miért nem működik (JS)?

Miért nem működik (JS)?

Figyelt kérdés

A kód:


<!DOCTYPE html><html><head><title></title>

<style>

body{margin:0 450px 0 450px;}

h1 {text-align: center;}

.button {

background-color: orange;

border: none;

color: white;

padding: 15px 32px;

text-align: center;

text-decoration: none;

display: inline-block;

font-size: 16px;

margin: 20px 28px;

cursor: pointer;}


.button:hover {

background-color: #e69500;

}



#tova{visibility: hidden;}

</style>


</head>

<body>


<h1>Mi a....?</h1><br><br>

<p id="para"></p>


<button id="p2" class="button" onclick="win()">Buttongrggjo</button>

<button class="button lose" onclick="vill()">Buttongrgrgg</button>

<button class="button lose" onclick="vill()">Buttongrgrgr</button>

<button class="button lose" onclick="vill()">Buttongirossz</button>


<br><br><br><br>


<a id="tova" href="2.html">NEXT QUESTION PLS</a>

<script>


function win(){

if(document.getElementById("p2"))

{

var x = document.getElementById("p2") ;

x.style.backgroundColor= (x.style.backgroundColor=='green'?'orange':'green');

setTimeout('win()', 500);

}

document.getElementById("tova").style.visibility = "visible";

}



function vill()

{

if(document.getElementsByClassName("lose"))

{

var y = document.getElementsByClassName("lose") ;

y.style.backgroundColor= (y.style.backgroundColor=='red'?'orange':'red');

setTimeout('vill()', 500);

}

}


</script>

</body>

</html>



TypeError: y.style is undefined - jelzi hibaként


Probléma: Egy legyen ön is milliomos jellegű játékot szeretnék csinálni. Ennek megfelelően a jó válaszra kattintva zöld, míg rossz válaszra kattintva pirosan kezd villogni az adott gomb. Ez egyenként működött is az első és utolsó válasszal, de mikor meg akartam csinálni, hogy a 3 rossz válasznál is működjön a fent látható hibát produkálta és persze nem is villogott attól fogva. Mi lehet a hiba? Talán a dupla class-ba köt bele a js ami css-html-ben működik? Az y mindenesetre tudtommal definiálva van


2017. ápr. 11. 15:38
 1/7 anonim ***** válasza:
Persze, hogy hibát ad, mert mivel több elemet is talál, az y-ba nem egy elem fog kerülni, hanem egy halmaz, amiben az elemek vannak. Vagy azokon kell végigmenned egy iterációval és egyenként állítani a hátteret, vagy - és ez a gyorsabb - használj jQuery-t és akkor egyszerűen $('.lose').css('background-color','red'); -el állítható egyszerre az összes.
2017. ápr. 11. 15:46
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
De szép kód. Gondold át ezt az egészet újra. Ajánlom a PHP nyelvvel való barátkozást.
2017. ápr. 11. 15:50
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:
Front-endes lennék és mint látod még csak barátkozom vele, de majd idővel... :)
2017. ápr. 11. 15:53
 4/7 A kérdező kommentje:
Nem akartam JQ-t hasznáélni erre
2017. ápr. 11. 15:54
 5/7 anonim ***** válasza:

1. Tessék használni kódmegosztó oldalt - az meghagyja az indentálást és használ kódszínezést, így olvashatóbbá téve a kódot.

2. Hiányzik a kezdő <html> tag

3. Hiányzik a kezdő <head> tag

4. A <br> nem sorköz létrehozására jó - helyette ott a CSS margin tulajdonsága.

5. Ha ugyanolyan funkciójú dolgot csinálsz - például egy adott elem villogtatása - akkor annak csinálj egy függvényt.

6. Ha egy osztályt kérdezel le a document.getElementsByClassName segítségével, az egy tömböt ad vissza. Tehát ha az az osztály tagjait el akarod érni, akkor végig kell menned a tömbön.

7. Az onclick attribútum helyett ott van az onclick esemény. Szebb, jobban elkülönül a struktúra és a viselkedés.


Itt látható működés közben:

[link]

2017. ápr. 11. 18:57
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:

Itt meg szépen egybe:

[link]

2017. ápr. 11. 19:01
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:

1. Nyilván nem kifogás, de vmi gebazs volt a pastebinnel (nem engedte a kirakni a linket, merthogy vmi rövidítést nem enged, használjam a teljes linket, vagy mi...fura) jsfiddle-lel meg nem működött vmiért úgy, ahogy kéne (bár nem is használtam még előtte szal nem csoda, ha vmi nem...)


2-3.Nem hiányzik.

4.Tudom, használtam is a margin-t a kódban, de amikor csak gyakorlok nem a szépségre megyek és így volt talán a leggyorsabb.

5-7. Értem, nagyon köszönöm :)

2017. ápr. 11. 19:42

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!