Denkfehler ?
michelm
- dhtml
Hallo,
da ist mir irgendwie ein Denkfehler unterlaufen.
1. Die Undo/Redo-Funktion läuft nicht so richtig.
2. Auch weiss ich (noch) nicht, wie ich die Funktion Ersetzen rückgängig machen kann.
3. Beim Ersetzen kommt noch hinzu, dass Umlaute nicht funktionieren,
z.B. lässt sich das Wort Müll nicht finden, wenn ich z.B. Müll durch Schrott ersetzen möchte.
4. Die Anordnung der Accesskey bereitet mir noch ziemliches Kopfzerbrechen
http://www.fniffi.de/Musterformular401g.html
Wichtig:
Das ist nur ein Musterformular zum Experimentieren für Netscape 7 und Internet Explorer 6 mit JavaScript DOM2.
An eine ernsthafte Anwendung ist nicht gedacht ! Höchstens für einen Browser-Härtetest bezgl. DOM2.*ggg*
Opera und andere Exoten streiken hier schon bei der Ebenentechnik (DIV-Tags) oder am im DIV versteckten IFRAME.
Danke für jede Hilfe !
Michael
Hier die Undo/redo-Routine für Eure Verbesserungen :
var eingabefocus=new Array();for(i=1;i<=255;i++){eingabefocus[i]=false;}
var Eingabefelder=new Array();var Etiketten=new Array();var EZiel;var Mtrouble;
var records=new Array();var recordfields=new Array();var recount=0;var last=0;var aufz=false;
var suchtext=new String();var zielfeld;var tmpausgabe;var neu=new Array();
var speichern=false;
if(document.all&&window.clientInformation){isIE=-1;}
var dummyNav = navigator.userAgent.toLowerCase();
var IsGecko = (dummyNav.indexOf('gecko') != -1);
var IsOpera = (dummyNav.indexOf('opera') != -1);
var IsIE6 = (dummyNav.indexOf('msie 6.0') != -1);
var IsDOM2 =IsIE6|IsGecko;
for(i=0;i<=10;i++){recordfields[i]="dummy";}
function record(feld,wert){
if(recount>=0&&IsDOM2){
records[recount]=document.getElementById(feld).value;
recordfields[recount]=feld;last=recount;aufz=true;anzeige();
recount++;
}
}
function anzeige(){
if(IsDOM2){
if(aufz){
document.getElementById("undo").value="Sichere.....:"+last;aufz=false;mmId=setTimeout("anzeige()",1500);}
else{
document.getElementById("undo").value="Rückgängig: "+recount;
document.getElementById("redo").value="Wiederhole: "+(recount-1);}
}
}
function rueckg(){
if(IsDOM2){
anzeige();recount--;
if(recount>=0){
if(records[recount]!=""){document.getElementById(recordfields[recount]).value=records[recount];}
}
else{recount=0;
if(speichern==false)
{speichern=confirm("Keine Aufzeichnung vorhanden - die Checkbox SPEICHERN anklicken, um aufzuzeichnen "+last+":"+recount);}
else{alert("Keine Aufzeichnung vorhanden!");}}
}
}
function wiederh(){
if(IsDOM2){
if(recount>=0){anzeige()};recount++;
if(recount>0&&recount<=last){
if(records[recount]!=""){
document.getElementById(recordfields[recount]).value=records[recount];}
}
else{alert("Keine Aufzeichnung vorhanden");}
}
}
function process(){
Eingabefelder=document.getElementsByTagName("input");
suchen=prompt("Bitte alten Begriff oder Zeichen eingeben, das ersetzt werden soll, sowie das neue Wort oder Zeichen:","altes Wort = neues Wort");
if(suchen){
neu=suchen.split("=");
if(neu.length>=2){
for(i=0;i<=(Eingabefelder.length-1);i++){
if(Eingabefelder[i].getAttribute("type")=="text"&&Eingabefelder[i].value.indexOf(neu[0])!=-1){
ersetze(Eingabefelder[i].id,neu[0],neu[1]);
}
}
ersetze("message",neu[0],neu[1]);
}
else{alert("Fehler:Eingabe falsch - Bitte altes Wort = Neues Wort eingeben"); neuId=setTimeout("process()",1000);}
}
}
function ersetze(zielfeld,suchwort,ersetzen){
var suche=new RegExp(suchwort,"gi");
if(suche.test(suchwort)){
tmpausgabe=document.getElementById(zielfeld).value.replace(suche,ersetzen);document.getElementById(zielfeld).value=tmpausgabe;}
}
function initBlatt(){
if(IsDOM2){
for(i=1;i<=7;i++){
if(i>1){document.getElementById("blatt"+i).style.left=(i*25)+"px";}
document.getElementById("blatt"+i).style.top="140px";
document.getElementById("footer").style.top="800px";
}
}
}