8. Wörter drehen, dass Sie vom Ende bis zum Anfang gelesen werden

Erstmal der Quellcode, dann die Erklärung:

<html>
 <head>
  <meta name="generator" content="HTML Studio">
  <title>Drehung von woertern oder Saetzen </title>


 <script language="JavaScript">
 function enc5() {
var daus="";
var test=document.changeForm.dialog.value;
var testlang=test.length - 1;
for (var ska=0;ska<test.length;ska++) {
var minus= testlang-ska;
var raus = eval("test.charAt(" +minus+ ")");
if (1 == 1)
daus+=raus;
 }
document.changeForm.dialog.value = daus
}
 </script>
 </head>
 <body>
  <FORM NAME="changeForm">
 
<center><div><textarea id=dialog rows="10" cols="35"></textarea></div>
<INPUT TYPE="BUTTON" onClick="enc5()" VALUE="Wort drehen"></center>

 <br>
</FORM></center>
 </body>
</html>

---
Hinweis: Sie können Wörter oder ganze Sätze von rechts nach links schreiben bzw. umdrehen, da Javascript Leerzeichen als einzelne Zeichen interpretiert, also können Sie gerne eine Din A 4 Seite hineinkopieren und umdrehen. Auf dieser Seite ist dann der Code ausführlich erklärt. Das ist wirklich einzigartig, da andere Webseiten nicht solch eine Lösung mit reinem Javascript anbieten... Das ganze können Sie durch einen weiteren Knopfdruck dann wieder in die richtige Richtung umdrehen - geht übrigens auch mit inner-html...
Hyperlink:  demo



Das Javascript dürfte die Schwierigkeit sein, daher der Body der HTML-Seite schnell überflogen: Es gibt eine Textarea mit Namen dialog und einen Button zum Aufrufen der Funktion enc5.

Sobald eine Texteingabe gemacht wurde - z. B. ein "ab" und der Button Wort drehen betätigt wurde, wird der Text als Variable test eingelesen (
var test=document.changeForm.dialog.value;).

Zuvor wird eine leere Variable erzeugt:
var daus="";

Mit dem fest vorangeschriebenen Befehl length wird die Textlänge ermittelt, also bei "ab" z. B. eine 2 die Minus
1 genommen wird, also eine 1 ist. Die Zahl wird in der Variablen  testlang gespeichert.

Wieso denn jetzt eine 1, wenn wir zwei Zahlen brauchen. Tja, das ist wieder höhere Javascript-Mathematik: Javascript zählt bei den meisten Funktionen von 0 an und dann wird 0 und 1 für zwei Buchstaben oder Zeichen gebraucht, aber keine 2...

for (var ska=0;ska<test.length;ska++) { Das ist eine klassische Vorschleife, die meistens bei Erklärungen mit i statt ska  demonstriert wird. Brauchen Sie mehrere for-Schleifen in einem Projekt, dann gewöhnen Sie sich dran zwei oder dreistellige Buchstabenkombinationen zu vergeben...

Merke : Hier wird test.length verwendet, also ohne den zuvor getätigten Abzug von 1. Da steht bei zwei Buchstaben eine 2. Wer soll jetzt noch schlau draus werden? Starten tut das mit 0 im ersten Durchlauf der Schleife und der zweite Durchlauf ist eine 1.

1 ist die letzte Zahl, die kleiner als zwei ist (geschrieben <test.length).

Einen dritten Durchlauf gibt es nicht, weil dann 2 = test.length bei zwei Buchstaben wär. So viel zur Javascriptlogik, die wirklich scheinbar viele Nutzer an ihr geistiges Ende bringt...

var minus= testlang-ska; Wir wollen gleich jeden einzelnen Buchstaben abgreifen und verkehrt herum in eine neue Variable daus schreiben...

Wir nehmen wieder das Beispiel mi zwei Zeichen a und b. Da würde jetzt also stehen, das var minus gleich 1-0 ist und im zweiten Durchlauf der Schleife 1-1

Das ist jetzt echt heavy und wird nochmal langsam erklärt.

Im ersten Durchlauf ist ska gleich Null. testlang  wurde von uns bereits definiert als test.length - 1; ab hat im Beispiel zwei Zeichen, also, also 1 minus 0 =1
Im zweiten Durchlauf ist ska gleich 1 und testlang   1, also die Variable minus =0

In der nächsten Zeile (var raus = eval("test.charAt(" +minus+ ")");) wird im Probebeispiel zuerst die Variable minus auf 1 gesetzt, während ska 0 ist und testlang 1.


Zweite Durchlauf:
Der Buchstabe b entspricht einer 1 für den charAt-Befehl, der wieder nach der bescheuerten Javascriptlogik den ersten Buchstaben von dem String test als 0, in unserem Beispiel also a=0 und b=1 interpretiert.

Im ersten Durchlauf wird also das b gezogen, dass nach dem ersten Dreh der erste Buchstabe wird.

Im zweiten Durchlauf wird das a gezogen, dass test.char...0 entspricht.

if (1 == 1)
daus+=raus;

Hm, die erste Hälfte ist Quatschcode, weil 1 immer 1 ist-:), aber nach Setzung dieser Bedingung könen wir im Fachjargon ein Statement abgeben, was heißt, füge den Buchstaben, der anhand seiner Nummer ausgewählt wird, doch einfach mal an die als vorher definierte leere Variable daus oder eben  daus+=raus;

So im Zweiten Durchgang ist die Variable minus=0, also im Beispiel a und das a wird hinter das b gesetzt.

Das ganze können Sie nun mit weiteren Buchstaben und Leerzeichen machen, weil es immer wieder dasselbe Spiel ist...

Am Ende der Schleife wird ein Buchstabe nach dem anderen jeden Schleifendurchgang angehängt und das fertige Wort nach Durchlauf der Schleife  }, dann wird zum Schluss die Variable mit dem Wort ab im Beispiel übergeben (document.changeForm.dialog.value = daus)

Die Problematiken zusammengefasst:

1. charAt und length arbeiten nach zwei verschiedenen Logiken -  Für charAt ist 0, was für length definitiv (logisch richtig eine 1 ist)
2. for Schleifen unterliegen der positiv-Javascript-Logik, nämlich das der erste der nullte Durchlauf ist, was für uns freilich der erste Durchlauf ist.
3. Um das wieder ins Lot zu bringen, müssen Sie die Schleifenlogik durchbrechen - indem Sie einfach eine neu Variable Schaffen die rückwärts zählt: var minus= testlang-ska;
4. Um den Unterschied von der menschlichen zur Javascriptlogik zu überwinden müssen Sie eine neue Variable schaffen, die um eine Stelle kürzer als die logische length-weise ist: var testlang=test.length - 1;

5. Dabei dürfen Sie nicht die Schleifenlogik angreifen, die auf Javascriptlogik getrimmt ist: for (var ska=0;ska<test.length;ska++) {

6. Dann müssen Sie es schaffen, die Variable minus in den Charat-Befehl einzuflechten (var raus = eval("test.charAt(" +minus+ ")");), eine Frage der Syntax


Wie drehe ich das Wort wieder? Einfach Button nochmal betätigen...

Fazit

Es gibt sicher auch andere Lösungen, die man komischer Weise bei den einschlägigen Suchmaschinen nicht angeboten bekommt und das im Jahr 2014.

Der Autor ist überzeugter Batchschreiber, weil dort eine 1 eine 1 und keine 0 ist.

Da im Jahr 2014 keine richtig validen Lösungen angezeigt werden kommt der Autor zum Schluss: Javascript ist nicht immer logisch - bei length ist eine 1 eine 1 und bei charAt und bei Schleifen dann wieder eine Null - ist das logisch?

Dem Autor,  der Autodidakt ist und somit die Konventionen  eines Profis nicht entgegenstehen, kann unvorbelastet eine Lösung anbieten, weil er Code nach seiner menschlichen Logik sortiert  - das ist manchmal ein riesiger Vorteil - ich richte mich nach Logik und nicht nach Konventionen, die einem unvoreingenommenen Denken entgegenstehen.

Impressum








Impressum
Datenschutz