Tag-Name ändern(HTML, JavaScript, DOM-Manipulation)?
Hi, wie kann ich, wenn ich mit DOM-Methoden ein Element auswähle, dessen Tag-Namen ändern, geht das überhaupt?
2 Antworten
Entweder per CSS:
a.deactivate-link {
pointer-events: none;
text-decoration: none;
color: black;
}
https://jsfiddle.net/3o2nz0mq/2/
Oder komplett per JavaScript:
const oldEl = document.getElementById("myElement");
const newEl = document.createElement('span');
newEl.innerHTML = oldEl.innerHTML; //Content übertragen
newEl.classList = oldEl.classList; //Klassen übertragen, um Style sogut es geht beizubehalten
oldEl.replaceWith(newEl);
Du kannst das Element mit replaceWith ersetzen.
Aber ob das überhaupt notwendig ist, würde ich zunächst infrage stellen. Es kann womöglich ausreichen, das Verhalten / Aussehen des Elements mit CSS zu ändern. Das heißt, du könntest dem Element vermutlich ebenso gut einen CSS-Klassenselektor zuweisen.
element.classList.add("some-css-class");
CSS:
.some-css-class {
/* ... */
}
Ob etwas anklickbar ist kann man auch per CSS ändern.
a.some-css-class {
pointer-events: none;
text-decoration: none;
color: black;
}
Ach so, mit pointer-events kann man anklicken abschalten oder wie?
Das kann man zwar auch via CSS regeln (pointer-events), aber in dem Fall wäre eine andere Lösung (z.B. der Austausch des Elements) tatsächlich deutlich besser.
Mit CSS nimmst du nur Änderungen auf visueller Ebene vor, die aber nicht jeder Nutzer (bspw. blinde Personen) erfassen kann. Bei Elementen wie h2, p, div, u.ä. ist das soweit unproblematisch, da der Nutzer keine Interaktion mit ihnen erwartet. Bei interaktiven Elementen wie eben Links ist das anders: Der Nutzer erwartet, dass etwas bei Klick passiert, doch es passiert nichts.
Auch wenn du das weitere Aussehen des Links änderst (Schriftfarbe, etc.), bleibt es physisch ein Link. Die Art, wie eine Webseite ausgelesen wird, ist nicht auf die visuelle Ebene beschränkt. Es gibt ebenso Tools, die noch einmal das Markup direkt abgreifen und interpretieren.
Link ist Link. Ob er nun auf die selbe Seite führt oder nicht. Für einen Nutzer ist nicht ersichtlich, wieso er plötzlich nicht mehr funktioniert.
Nein, eher nicht, denn in diesem Fall soll ein Hyperlink zu einem gewöhnlichen, nicht anklickbaren Fall werden.