Hallo,
Hier die Aussage vom Opera:
Uncaught exception: ReferenceError: Cannot assign to 'document.getElementById('fake').value.charAt(i)'
da hat er verdammt Recht, der Gute.
document.getElementById('fake').value.charAt(i) = "A";
document.getElementById('fake').value.charAt(i+1) = "E";
Der Ausdruck document.getElementById('fake').value.charAt(i)
ist kein sogenannter Linkswert oder L-Value, das heißt, er kann nicht links vom Zuweisungszeichen stehen. Denn dieser Ausdruck steht syntaktisch betrachtet nicht für einen Variablenwert im Speicher. Von der Überlegung her natürlich schon, deswegen ist das hier nicht auf Anhieb zu verstehen.
Was du hier formuliert hast, ist syntaktisch gleichwertig mit
Math.floor(x) = 4;
Das heißt, du lässt einen Ausdruck berechnen, und willst dann diesem Ausdruck einen Wert zuweisen. Das geht nicht.
Aber der Zugriff auf einzelne Zeichen eines Strings geht ja viel einfacher mit eckigen Klammern, quasi indem man den String als Array aus Zeichen anspricht.
Und noch ein Hinweis zur Optimierung: Du bestimmst innerhalb deiner Funktion ziemlich oft denselben Ausdruck, nämlich document.getElementById('fake').value
. Da wäre es günstig, den Ausdruck *einmal* zu Beginn der Funktion zu ermitteln und lokal zwischenzuspeichern.
So long,
Martin
--
Solange der Nagellack nicht trocken ist,
ist eine Frau praktisch wehrlos.
(Burt Reynolds, US-Schauspieler)