[GM/Javascript] str.replace funktioniert nur einmal

11/09/2011 23:05 Che#1
Ja hab n kleines Problem (wahrscheinlich wie das letzte mal ein absolut dummes [Only registered and activated users can see links. Click Here To Register...]) und zwar:
Code:
 txtarea.addEventListener('keypress', function(e){
this.innerHTML = this.innerHTML.replace(/a/gi, 'test');
 }, true);
Nach Tastendruck werden alle "a"s mit dem String "test" ersetzt, wenn ich jetzt jedoch in meiner textarea noch n paar "a"s eingebe, werden diese nicht mit dem String "test" ersetzt, warum nicht?!?
Das ganze ist n Greasemonkey Skript zu testzwecken, hier die ganze Funktion + Aufruf:
Code:
function addfield(){
  var txtarea = document.createElement('textarea');
  txtarea.setAttribute ("id", "blah");
   txtarea.innerHTML = 'blahagjhlöhjlökjöla';
document.getElementsByTagName('body')[0].appendChild(txtarea);
 txtarea.addEventListener('keypress', function(e){
this.innerHTML = this.innerHTML.replace(/a/gi, 'test');
 }, true);
}

window.addEventListener("load", function(e) {
    addfield();
}, false);
Wer es nicht weiß:
Normalerweise 'a' aber da ich das Ersetzen global machen will und Case-insensitive hab ich stattdessen /a/gi g= global i = (case)insensitive

Was mich am meisten verwundert ist folgendes:
Code:
 txtarea.addEventListener('keypress', function(e){
alert("test");
 }, true);
Die Alertbox kommt nach jedem Tastendruck, also schließe ich daraus, dass die Funktion nach jedem Tastendruck aufgerufen wird, aber das replace nichtmehr klappt (oder vllt das innerHTML keine neuen Werte liefert?)

Bitte helft mir mal bei meinem neuen Noobproblem :rolleyes:


Bitte closen, nach 3h Nachdenken durch Zufall selbst draufgekommen, mit this.innerHTML geht es nicht, mit this.value schon :>