Autor | Zpráva | ||
---|---|---|---|
Dr.P.Pa Profil |
#1 · Zasláno: 25. 11. 2019, 15:33:39
Na stránku jsem umístil scritp, který po odkliknutí odpočítává čas do zobrazení dalšího textu (řešení úlohy).
Na jedné stránce ovšem není možné umístit více, než jeden - pak se začnou odpočty navzájem přepisovat a zkrátka u dalšího zadání už script nefunguje správně. Jak bych mohl nastavit opakování funkce? Díky za radu :-) <script> function countToShow(timeInSeconds) { var countdownElement = document.getElementById('countdown'); var contentElement = document.getElementById('r_content'); var adsElement = document.getElementById('ads'); var remainingSeconds = timeInSeconds; adsElement.style.display = ''; countdownElement.innerHTML = remainingSeconds; var interval = setInterval(function() { countdownElement.innerHTML = --remainingSeconds; if (remainingSeconds === 0) { clearInterval(interval); contentElement.style.display = ''; adsElement.style.display = 'none'; } }, 1000); } </script> <div id="container"> <a href="#0" onclick="countToShow(30)"><strong>ŘEŠENÍ</strong></a> <div id="ads" style="display: none"> <div id="countdown"></div> </div> <div id="r_content" style="display: none"> |
||
Keeehi Profil |
#2 · Zasláno: 25. 11. 2019, 16:01:21
Základem je použít jinou identifikaci než na základě IDček. Ty musí být v rámci stránky unikátní.
Případně se dají IDčka zachovat ale ta funkce countToShow musí přijímat jejich unikátní jména. |
||
Dr.P.Pa Profil |
#3 · Zasláno: 25. 11. 2019, 20:05:27
Ano, zkoušel jsem vytvořit unikátní id, ale pár se to chovali stejně ☹️
Jakou jinou identifikaci bych mohl použít? |
||
Tomášeek Profil |
Dr.P.Pa:
„Jakou jinou identifikaci bych mohl použít?“ Kontextové zaměření v DOMu. „zkoušel jsem vytvořit unikátní id, ale pár se to chovali stejně ☹️“ Zkoušel jsi špatně. |
||
Dr.P.Pa Profil |
#5 · Zasláno: 25. 11. 2019, 21:07:05
Tomášeek:
Ano, zkoušel jsem špatně... To jsem tak nějak věděl... Ale sem jsem to nepsal proto, abych se dozvěděl, že jsem blbej, ale abych se dozvěděl, jak to udělat správně :-) Díky za tvůj čas... |
||
lionel messi Profil |
Dr.P.Pa:
„Ale sem jsem to nepsal proto, abych se dozvěděl, že jsem blbej, ale abych se dozvěděl, jak to udělat správně :-)“ To si sa aj dozvedel: Keeehi: > Ty musí být v rámci stránky unikátní. > Případně se dají IDčka zachovat ale ta funkce countToShow musí přijímat jejich unikátní jména. Tomášeek: > Dr.P.Pa: > „Jakou jinou identifikaci bych mohl použít?“ > Kontextové zaměření v DOMu. K rade od Tomášeek dodám ešte malé postrčenie: querySelector. To, ako si to [#3] skúšal, sa nikto z nás nedozvedel, keďže jediný tvoj výstup, ktorý si pridal sem, obsahuje nedostatky, na ktoré ťa kolegovia upozornili. Keby si namiesto zbytočného príspevku [#5] dodal čosi konštruktívnejšie (prepracovaný kód alebo ideálne živú ukážku), zvýšil by si svoju šancu posunúť sa vpred. Takto prešľapuješ na mieste a ochota ostatných poradiť ti postupne klesá. |
||
Dr.P.Pa Profil |
#7 · Zasláno: 25. 11. 2019, 22:04:03
lionel messi:
Nejsem si úplně jistej, proč ztrácíš čas psaním takovýchto příspěvků. Myslím, že je zřejmé, že NEVÍM jak správně ID upravit, aby to běželo správně a že netuším, jak použít kontextové zaměření v DOMu. Odpovědi typu "Děláš to špatně" jsou hloupé a nikam diskusi neposouvají. A když napíši, že nevím, tak očekávám alespoň trochu konkrétnější odpověď. A nebo žádnou, pokud je to pod tvou úroveň... POkud si hoši potřebujete dokázat, kolik toho umíte, tak jo - JSTE FAKT DOBŘÍ A MOC VÁM GRATULUJI. Já si teď odskočím někam jinam, kde se snad najde někdo, kdo bude méně machrovat a bude chápat, že někdo, kdo se "hloupě ptá" není blbeček, ale jen někdo, kdo se v této oblasti pohybuje jen málo - a tedy je třeba s ním hovořit poněkud více na jeho úrovni... Tedy jako s někým neinformovaným, nikoli jako s blbcem... |
||
Keeehi Profil |
#8 · Zasláno: 25. 11. 2019, 23:28:14
Dr.P.Pa:
„Ano, zkoušel jsem vytvořit unikátní id, ale pár se to chovali stejně ☹️“ No to by nemělo. Asi si to někde omylem přepisuješ. Ovšem potřebujeme vidět, jak jsi to zkoušel a pak ti můžeme říct, kde máš tu chybu. |
||
Dr.P.Pa Profil |
#9 · Zasláno: 26. 11. 2019, 09:08:06
Keeehi:
Moc děkuji za odpověď. Vycházel jsem z toho, že přepíši názvy ID v obou částech - tedy přidal jsem čísla k ID takto: <script> function countToShow(timeInSeconds) { var countdownElement = document.getElementById('countdown1'); var contentElement = document.getElementById('r_content1'); var adsElement = document.getElementById('ads1'); var remainingSeconds = timeInSeconds; adsElement.style.display = ''; countdownElement.innerHTML = remainingSeconds; var interval = setInterval(function() { countdownElement.innerHTML = --remainingSeconds; if (remainingSeconds === 0) { clearInterval(interval); contentElement.style.display = ''; adsElement.style.display = 'none'; } }, 1000); } </script> a dále v druhé části <div id="container1"> <a href="#0" onclick="countToShow(30)"><strong>ŘEŠENÍ</strong></a> <div id="ads1" style="display: none"> <div id="countdown1"></div> </div> <div id="r_content1" style="display: none"> A k druhému zadání na totožně, jen s další číslovkou samozřejmě. Nejspíš je to úplná blbost, ale prostě to fakt nevím :-( |
||
Kajman Profil |
To by se musela i přejmenovat ta funkce, aby se nepřepsala ta původní. Ale lepší bude ten druhý způsob - tedy ta id předat jako parametry jedné společné funkci.
Živá ukázka Ještě lepší by bylo zmíněné "Kontextové zaměření v DOMu", ale pro začátečníka je řešení s různými id sice pracnější, ale snáze aplikovatelné. |
||
Tomášeek Profil |
#11 · Zasláno: 26. 11. 2019, 10:20:43
Dr.P.Pa:
„že netuším, jak použít kontextové zaměření v DOMu.“ A co takhle si zkusit o tom kontextu něco přečíst? „Odpovědi typu "Děláš to špatně" jsou hloupé a nikam diskusi neposouvají.“ Ovšem tvoje lenost to také nikam neposouvá. A snažit by ses měl zejména ty, my s tím JS problém nemáme. |
||
Dr.P.Pa Profil |
#12 · Zasláno: 26. 11. 2019, 13:32:00
Kajman:
Díky. Zajímavé ježe to v této ukázce odpočítává, zatímco na mé stránce ne :-( - mozkolam.cz/?p=5586&preview=true Jinak zatímco ukázka dopočítá do nuly, měl by se po odečtení zobrazit text - viz například zde: mozkolam.cz/slovni-hlavolamy/logicke-ulohy/pravda-a-lez/pandorina-skrinka |
||
Kajman Profil |
#13 · Zasláno: 26. 11. 2019, 13:55:52
Preview odkaz bude jen pro administrátory. Zkuste si odkaz otevřít v anonymním okně, ať vidíte, co my.
|
||
Dr.P.Pa Profil |
#14 · Zasláno: 26. 11. 2019, 14:32:43
Kajman:
Pardon, mozkolam.cz/mozkolam/double-solution |
||
Kajman Profil |
#15 · Zasláno: 26. 11. 2019, 14:35:33
Konzole v prohlížeči (F12) hlásí nesmysly...
function countToShow(timeInSeconds, countdownId, contentId, adsId) {</p> <p> var countdownElement = document.getElementById(countdownId); var contentElement = document.getElementById(contentId); var adsElement = document.getElementById(adsId); var remainingSeconds = timeInSeconds;</p> <p> adsElement.style.display = ''; countdownElement.innerHTML = remainingSeconds;</p> <p> var interval = setInterval(function() {</p> <p> countdownElement.innerHTML = --remainingSeconds;</p> <p> if (remainingSeconds === 0) { clearInterval(interval); contentElement.style.display = ''; adsElement.style.display = 'none'; }</p> <p> }, 1000); } |
||
Kajman Profil |
#16 · Zasláno: 26. 11. 2019, 14:38:41
Asi si tu funkci dejte, k té předešlé a novou úpravu přejmenujte, nebo tam nechte jednu a udělejte tam podporu pro nevyplněné parametry, aby se použily ty dřívější...
document.getElementById(countdownId || 'countdown'); |
||
Dr.P.Pa Profil |
#17 · Zasláno: 27. 11. 2019, 09:58:51
Ano, omlouvám se - nyní jsem to upravil, a už se to chová stejně, jako na Vaší ukázkové stránce :-)
Jen se po dopočítání nezobrazí další text (tedy řešení), ale jen se dopočítá do nuly. Jsem si vědom, že se ptám opravdu blbě, ale prostě to neumím :-( |
||
Časová prodleva: 3 roky
|
0