Gunnar Bittersmann: Text beim Klick (mehrmals!) ändern

Beitrag lesen

@@Max Mustermann:

nuqneH

Meine Website hat eine russische Deklinationstabelle zu bieten, die zurzeit so aufgebaut ist, dass die Wörter zunächst in kyrillischer Schrift erscheinen, beim Klicken aber in der ISO-Transliteration. Dies habe ich mit onclick="this.firstChild.nodeValue = 'XY'" hinbekommen.

Hm, vermutlich schlecht. Du pflegst die Texte an unterschiedlichen Stellen? Die in kyrillischer Schrift im HTML und die in lateinischer Schrift in JavaScript? Ungünstig.

Besser so:

<span lang="ru" class="Cyrl">язык</span>  
<span lang="ru-Latn" class="Latn-transliteration">âzyk</span>  
<span lang="ru-Latn" class="Latn-transcription-de">jasyk</span>

Ohne JavaScript lässt du alles anzeigen. Mit JavaScript setzt du eine Klasse fürs 'html'-Element

document.documentElement.className += " js";

und blendest initial die Umschreibungen mit lateinischen Buchstaben aus:

.js .Latn-transliteration, .js .Latn-transcription-de { display: none }

Mit JavaScript setzt du auf die Clicks bei einem geeigneten Element (das könnte dein 'table'-Element sein oder 'body' eine Klasse:

document.body.className = (document.body.className != "show-Latn-transliteration" ? "show-Latn-transliteration" : "show-Latn-transcription-de";

Nun möchte ich aber auch, dass nach dem _zweiten_ Klick die deutsche Transkription angezeigt wird.

Das erledigt obige Zeile gleich mit.

Im Stylesheet steht dazu noch:

.js .show-Latn-transliteration .Cyrl, .js .show-Latn-transcription-de .Cyrl { display: none }  
.js .show-Latn-transliteration .Latn-transliteration, .js .show-Latn-transcription-de .Latn-transcription-de { display: inline }

Außerdem möchte ich ein paar Formatierungen bei dem erscheinenden Text vornehmen, was damit leider nicht möglich ist.

Damit schon.

Qapla'

--
Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
(Mark Twain)