IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
citro
Člen
Avatar
citro:23.7.2020 10:33

Ahojte,

Pokúšam sa vytvoriť modálne okno, ktoré sa zatvorí kliknutím mimo neho. Postupoval som podľa tohto: https://www.w3schools.com/howto/tryit.asp?…
Toto funguje bez problémov. Problém nastáva, keď chcem odstrániť ikonu zatvorenia. Odstránim tag

<span class="close">&times;</span>

a zatváranie kliknutím mimo modálneho okna prestane fungovať. Vedel by mi prosím niekto objasniť v čom je problém.
Vopred ďakujem.

 
Odpovědět
23.7.2020 10:33
Avatar
Thomasitho
Člen
Avatar
Thomasitho:23.7.2020 14:13

Nefunguje to pretože nestačí len odstrániť tag <span> z HTML, musíš odstrániť/zako­mentovať aj tú časť kódu v JavaScripte, ktorá s týmto tagom pracuje:

https://www.w3schools.com/code/tryit.asp?…

 
Nahoru Odpovědět
23.7.2020 14:13
Avatar
citro
Člen
Avatar
citro:23.7.2020 15:19

Diky, takto to funguje. Aj keď celkom nerozumiem prečo to ovplyvňuje aj window.onclick. Veď sa predsa jedná o odlišnú funkciu. A myslel som si keď je v JS naviazaná funkcia na tag, ktorý v html neexistuje tak sa jednoducho funkcia ignoruje.

 
Nahoru Odpovědět
23.7.2020 15:19
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24.7.2020 9:38

Zkus si nekdy otevrit js-konzolu v prohlizeci pri ladeni javascriptu.
Obvykle se js kod i css chova tak, ze pri chybe se zadny dalsi uz nevykona.
Ty s tim kodem bohuzel pracujes pri generovani stranky (body.onload). Musel bys to obalit do funkce a nebo volat pres casovac/timer (setTimeout), aby to bezelo mimo normalni beh kodu.

Cili, stacili by v js kodu zakomentovat tohle, protoze to vyhodi error, protoze span=undefined, a hodnote undefined nemuzes definovat onclick.

/*
span.onclick = function() {
  modal.style.display = "none";
}
*/

/* nebo */
//span.onclick = function() {
//  modal.style.display = "none";
//}
Editováno 24.7.2020 9:40
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
24.7.2020 9:38
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24.7.2020 9:42

S tou konzolou to myslim tak, ze si otevri konzolu, otevri si puvodni program (nebo dej na strance F5) a original program nenapise chybu. Tebou zakomentovany jen span po F5 vyhodi chybu. Coz zpusobi, ze zadny dalsi js kod uz nebyl zpracovan, je to jen plain-text nekde v pameti.

 
Nahoru Odpovědět
24.7.2020 9:42
Avatar
citro
Člen
Avatar
Odpovídá na Peter Mlich
citro:24.7.2020 15:37

Ďakujem za vysvetlenie. Na tú konzolu som úplne zabudol. Máš pravdu, to dokáže vyriešiť mnoho vecí :)

 
Nahoru Odpovědět
24.7.2020 15:37
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.