Jak najít element podle odkazu a přiřadit mu class v JavaScriptu
Ahoj, mám prosím ještě jeden problém ohledně JS.
Znám ID, dejme tomu, že je ID=6 a potřebuji v seznamu menu elementu A přidat třídu, jedná se o položku která má v tomto konkrétním případě odkaz #6. Poradí někdo? Potřebuji to bez knihovny jQuery. Děkuji
<ul class="menu">
<li><a href="#1">Nějaký text</a></li>
<li><a href="#2">Nějaký text</a></li>
<li><a href="#3">Nějaký text</a></li>
<li><a href="#4">Nějaký text</a></li>
<li><a href="#5">Nějaký text</a></li>
<li><a href="#6">Nějaký text</a></li>
<li><a href="#7">Nějaký text</a></li>
<li><a href="#8">Nějaký text</a></li>
<li><a href="#9">Nějaký text</a></li>
..
..
<li><a href="#1501">Nějaký text</a></li>
<li><a href="#1502">Nějaký text</a></li>
..
..
</ul>
$('a[href="#2"]').addClass("druhy");
bez jQuery môžete využiť vanillaJS document.querySelector taky to je na jeden riadok.
V jQuery je mi k ničemu a nějaký vanillaJS taky. jak jsem psal, potřebuji to v čistém JS :(
VanillaJS = čistý JavaScript
https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector
Aha, tak že to bude správně takto?
To je nesmysl.
Děkuji, to ale bude brát všechny elementy A, ne jen v tom menu, jak to do toho prosím přidat? Děkuji
querySelector(".menu a[href='"+ id +"']")
Děkuji, funguje.
Dostávám ale chybu které taky nerozumím:(
No tak to asi nefunguje, když dostáváš tuhle chybu.
Máš správně nastavený obsah proměnné id?
Ono to fakt funguje, ale je tam pořád ta chyba.
Co přesně myslíš? Proměnná id existuje vždy.
Tak to musí být v jiné části kódu.
Tak jdu hledat..
PS: nevíš prosím, proč tady qfqc první příkaz (za pouziti id) funguje a druhý (za použití class) nefunguje?
Stačí se podívat na názvy těch metod:
getElementById - vrací jeden element
getElementsByClassName - vrací pole elementů
Takže si tam buď udělej ještě jeden cykl, nebo prostě použij první prvek, pokud ti to tak stačí.
Děkuji, myslíš takto bez cyklu? rfqc
Ne. Buď tam přidej ještě jeden cykl nebo použij první prvek, ale ten původní cykl tam nech.
Tak ted ti asi nerozumím.
A tohle je špatné řešení?
tfqc
Ono to funguje ale nevím zda se to neaplikuje i na ten div s třídou b, jestli se to opravdu aplikuje pouze na ty vnořené div-y.
V tom dalším případě se to aplikuje právě na ten div se třídou b a vnitřní to pouze podědily.
Už jsem to pochopil jak to myslíš, děkuju.
tak tohle opravdu hází tu chybu a id existuje
Je tohle
opravdu dobře když jsou ty odkazy ve tvaru
ptám se jelikož když nahradím id přímo číslem, dostanu stejnou chybu :(
Buď si zařiď aby id obsahovalo na začátku i # nebo si to uprav na:
querySelector("a[href='#"+ id +"']")
Chyba je pryč,
můžeš mi odpovědět snad na poslední dotaz, co se přesně stane když se klikne na ty odkazy v seznamu?
Tady ještě přikládám celou html aby to nějak upřesnil
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<ul>
<li><a href="#0">Odkaz</a></li>
<li><a href="#1">Odkaz</a></li>
<li><a href="#2">Odkaz</a></li>
<li><a href="#3">Odkaz</a></li>
<li><a href="#4">Odkaz</a></li>
<li><a href="#5">Odkaz</a></li>
<li><a href="#6">Odkaz</a></li>
<li><a href="#7">Odkaz</a></li>
<li><a href="#8">Odkaz</a></li>
<li><a href="#9">Odkaz</a></li>
</ul>
</body>
</html>
<script>
console.log(window.location.href);
</script>
Když budu klikat na ty odkazy v tom seznamu, url se v prohlížeči bude měnit (číslo za mřížkou) ale console.log(vypisuje neustále první url které se načetlo při prvním zobrazení stránky).
==============================
Jinak velmi moc děkuji za tvé rady a čas!
Ten kód se vykoná jednou při načtení stránky. Není důvod, proč by se to mělo potom měnit.
Pokud chceš reagovat na změnu hashe, tak se pověs na událost onhashchange.
Tohle už něco dělá ale nevím zda je to OK, pokud ano, tak celý JS kód mám vložit do té funkce? Děkuji
Ano, třeba tak.
OK, tak já tu patlaninu jdu nějak slepit dokupy ;) Zatím velmi moc děkuji...