Jak přidat class elementu na který se kliklo v JS
Ahoj,
jak můžu přidat v tomto seznamu nějakou class položce na kterou se kliklo? Jde to když nemají položky své ID?
Našel jsem jak přidat potřebnou class, ale ID položka nemá.
Díky.
document.getElementById(id).onclick = function(){
document.getElementById(id).classList.add("clicked")
};
<ul>
<li>Jedna</li>
<li>Dvě</li>
<li>Tři</li>
<li>Čtyři</li>
<li>Pět</li>
</ul>
Děkuji, funguje akorát jsem si neuvědomil že se nerefreshuje stránka a tak se to nastaví všem na které kliknu, jde to nějak pohlídat aby byla třída vždy jen u jednoho li?
EDIT:
Napadlo mě před nastavením té class všechny class vymazat , ale nevím jestli to není zbyteční, třeba se to dělá jinak.
Zkusil bych něco jako:
document.querySelectorAll("li") .classList.remove( 'class' ) ;
V podstatě je to potřeba udělat tak, jak jsi napsal. Případně takhle:
Dělá to to samé, jenom to má kratší zápis.
teda celý kód:
@Wikan:
Děkuji.
Umí Vanila JS procházet na localhostu adresáře ve kterých sama běží?
Čemu říkáš procházet adresáře?
Jestli dokáže vrátit názvy souborů a adresářů nejlépe rekurzivně.
Pokud myslíš v browseru, tak rozhodně ne. To by byla bezpečnostní díra jako prase.
Ale např. v NodeJS to jde. Ale na to se asi neptáš.
Ano, v nodejs to jde. A nejde to i když ten JS poběží jen na localhostu? Díky.
Ne.
Díky za informace, to je důvod proč jsem nic nenašel :(
Když bych chtěl po kliknutí na element LI v UL s id kategorie zavolat funkci mojefunkce(), tedy pouze na děti v UL
zkoušel jsem to takto ale nevím proč mi to nejede. Je to jak jsi mi dal tu ukázku, akorát bez toho cyklu. Díky
Ten cyklus tam byl z dobrého důvodu. To se pak nediv, že to bez něj nefunguje.
OK díky, myslel jsem, že to jde bez cyklu.
Prosím tě, když v JS vytvářím elementy tak to chvíli trvá a pak dostávám errory, že požadované elementy neexistují, jak se to správně řeší? Díky
Není důvod, proč by se správně vytvářené elementy neměly vytvořit prakticky okamžitě. Takže něco děláš blbě. Ovšem bez kódu a bez těch errorů se dost špatně radí.
soubor js.js
//dostanu chybu
Uncaught TypeError: Cannot read properties of null (reading 'addEventListener')[/code]
A proč to děláš mimo tu funkci? Protože pak se ti to zavolá už při načtení souboru, tedy v době kdy ten element ještě neexistuje.
Jelikož jsem se dočetl, že ta funkce document.onload=start() se spustí až je všechno načtené, patrně tedy asi ne.
Ale ona se spustí, až když je všechno načtené.
Jasně, už vím jak to myslíš. Díky