2016-04-17 22 views
-2

Ich versuche, einen Textverschlüsseler zu erstellen, aber wenn ich diesen Code eingegeben habe, passiert nichts. Was ist falsch an meinem Code?JavaScript: Warum funktioniert dieser Code nicht?

function Encrypt(txt) { 
var chars = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z'} 
for (i = 0; i < txt.length; i++) { 
    var chr = txt.charAt(i); 
    var pos = chars.indexOf(chr); 
    if (pos == chars.length) { 
     pos = 0; 
    } 
    else { 
     pos = pos++ 
    } 
    txt.charAt(i) = chars[pos]; 
} 
alert(txt); 
} 
+0

'chars' sollte ein Array sein (eingeschlossen in []). –

+2

Etwas passiert: ein Syntaxfehler. – undefined

+4

Wenn Sie dies in einem Browser ausführen (die "Warnung" weist darauf hin, dass Sie es sind), öffnen Sie Ihre Webkonsole. Es wird Ihnen einen Fehler anzeigen. Die Webkonsole und der in Ihren Browser integrierte Debugger sind * unschätzbare Werkzeuge * für die browserbasierte Entwicklung. –

Antwort

0

Da dies kein Array, sondern Objekt ... und Objekt hat "index" : "value" Struktur haben.

ändern diese:

var chars = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z'}

dazu:

var chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z']

+0

Das ist * die Hälfte * des Problems. –

+0

funktioniert für mich ... aber es wird ein Problem mit UTF geben. –

4

Sie benötigen

  • Array [] statt Objekt {},
  • einige deklarierten Variablen
  • eine leere Ergebnisstring newText wird eine Zeichenfolge nur mit den character access
  • einen gültigen Scheck gelesen, wenn der Brief
  • Zuwachs pos ohne Zuordnung nicht im Array ist.
  • hängen Sie den Ergebnis-String mit dem codierten Zeichen

function Encrypt(txt) { 
 
    var chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'], 
 
     i, newText = '', chr, pos; 
 

 
    for (i = 0; i < txt.length; i++) { 
 
     chr = txt[i]; 
 
     pos = chars.indexOf(chr); 
 
     if (!~pos) { 
 
      pos = 0; 
 
     } else { 
 
      pos++; 
 
     } 
 
     newText += chars[pos]; 
 
    } 
 
    document.write(newText); 
 
} 
 

 
Encrypt('test');

+1

Vielen Dank! Es klappt! – HighTechProgramming15

+1

Natürlich könnte 'chars' nur eine Zeichenfolge sein. Strings haben auch 'indexOf'. –

+0

@ T.J.Crowder, ich neige dazu, den Geist des Quellcodes zu behalten. aber Sie haben Recht. –

0

Nicht die Fehler auch in den anderen Antworten beschrieben unter Berücksichtigung, mein Vorschlag, eine Zeichenfolge zu verschlüsseln ist:

function Encrypt(txt) { 
 
    var chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z']; 
 
    var txtResult = txt.split('').map(function(val) { 
 
    var pos = chars.indexOf(val); 
 
    return chars[(pos == chars.length) ? 0 : (pos + 1)]; 
 
    }).join(''); 
 
    document.write(txtResult); 
 
} 
 
Encrypt('gaemaf');

+0

Danke, aber ich habe meinen Code bereits aktualisiert, also funktioniert es gut! – HighTechProgramming15

Verwandte Themen