@@ liebewinter
function setAriaCurrentPage(c,i,f){
Wie schon angesprochen wurde: das ist schlechter Stil. Lokale Variablen sollten lokal deklariert werden. Die Funktion sollte keine Parameter erwarten.
Oder doch einen: den URL der aktuellen Seite: function setAriaCurrentPage(currentURL)
.
f=http://localhost/Beispiel-1.php;
Das auf der rechten Seite soll ein String sein, muss also in Anführungszeichen[1] stehen.
Und verwende sprechende Valiablenbezeichner. Bspw.
const currentURL = 'http://localhost/Beispiel-1.php';
(Wenn der Code auch in Uralt-Browsern laufen soll: var
statt const
.)
c=document.querySelectorAll("a[href]");
Das ist völlig unnötig. Mit document.links
steht bereits eine NodeList mit allen Links (incl. möglicher area
-Elemente) zur Verfügung.
if(c[i].getAttribute("href") == f){
Nicht die beste Idee. getAttribute("href")
liefert genau die Form, die im href
-Attribut angegeben wurde. Besser verwendet man die href
-Eigenschaft, die den vollständigen URL liefert – egal ob der Link relativ oder absolut angegeben wurde. Wenn wir aktuell auf https://example.net sind:
| HTML | .getAttribute("href")
| .href
|---|
| <a href="foo">
| "foo" | "https://example.net/foo"
| <a href="/foo">
| "/foo" | "https://example.net/foo"
| <a href="//example.net/foo">
| "//example.net/foo" | "https://example.net/foo"
| <a href="https://example.net/foo">
| "https://example.net/foo" | "https://example.net/foo"
Die Funktion könnte also so aussehen:
function setAriaCurrentPage(currentURL)
{
for (let i = 0, i < document.links.length; i++)
{
if (document.links[i].href === currentURL)
{
document.links[i].setAttribute("aria-current", "page");
document.links[i].setAttribute("tabindex", "0");
document.links[i].removeAttribute("href");
}
}
}
(Wenn der Code auch in Uralt-Browsern laufen soll: var
statt let
.)
Aufruf:
setAriaCurrentPage("http://localhost/Beispiel-1.php");
LLAP 🖖
„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
das, was in Programmiersprachen so „Anführungszeichen“ genannt wird:
'
bzw."
↩︎