• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[NICHT ERLEDIGT]JS spielt verrückt(oder so)[Brauche dringen Hilfe]

Wo liegt der Fehler?

  • In der Funktion repstr

    Stimmen: 0 0,0%
  • In der Keypress-Funktion für das Speichern

    Stimmen: 0 0,0%
  • Lachkrampf

    Stimmen: 0 0,0%

  • Umfrageteilnehmer
    1

dodo2998

Neues Mitglied
BRAUCHE DRINGEND HILFE!

Guten Tag,

ich schreibe mir zurzeit ein kleines IDE für HTML(mit CSS und JS), und das IDE ist in HTML, JS und CSS geschrieben. Das IDE hat spezielle Funktionen(z.B. Variablen in CSS, Vererbungen von "virtuellen Objekten", und vielem automatischem Quatsch(z.B. 10%+10px)
Da ich gerne schnell mit meinen Projekten fertig werden möchte, soll das IDE die Tabulatortaste unterstützen(funktioniert), Einrückungen bei neuer Zeile beibehalten(Da liegt der Fehler), und bei Schließ-Tags die Einrückung für die Zeile updaten(todo)
Nun ist aber der Witz: Wenn ich bei dem Start-Text Enter drücke, lande ich immer ganz vorne(=keine Einrückung). Wenn ich allerdings alles lösche und neu anfange zu schreiben, geht es. Ich blick irgendwie nicht durch xD
Hier die wichtigen Codeblöcke:
Code:
function repstr(x,y) {//da liegt er wahrscheinlich nicht
                var r="";
                for(var i=0;i<y;i++) {
                    r+=x;
                }
                return r;
            }
$(function(){//generiert den Startcode(wahrscheinlich liegt hier der Fehler)
                $("#o_code").val("<!DOCTYPE BinaryDesign>\n<html>\n\t<head>\n\t\t<title>Project 1</title>\n\t</head>\n\t<body>\n\t</body>\n</html>");
            });
$(document).delegate('textarea', 'keydown', function(e) {
                var keyCode = e.keyCode || e.which;
            
                if (keyCode == 9) {
                    e.preventDefault();
                    var start = $(this).get(0).selectionStart;
                    var end = $(this).get(0).selectionEnd;
            
                    // set textarea value to: text before caret + tab + text after caret
                    $(this).val($(this).val().substring(0, start)
                                + "\t"
                                + $(this).val().substring(end));
                
                    // put caret at right position again
                    $(this).get(0).selectionStart = $(this).get(0).selectionEnd = start + 1;
                }
                if (keyCode == 13) {//ab hier geht es nicht
                    e.preventDefault();
                    var start = $(this).get(0).selectionStart;
                    var end = $(this).get(0).selectionEnd;
                    var x = 0;
                    var y = "";
                    for(var i=0;i<start;i++){
                        y = $(this).val().charAt(start-i);
                        if(y=="\n") { break; }
                        else if(y=="\t") { x++; }
                        else { x=0; }
                    }
                    $(this).val($(this).val().substring(0, start)
                                + "\n"
                                + repstr("\t",x)
                                + $(this).val().substring(end));
                    $(this).get(0).selectionStart = $(this).get(0).selectionEnd = start + 1 + x;
                }
            });
$(window).keypress(function(event) {//Hat nicht direkt mit den Fehlern etwas zu tun, aber vielleicht ist es ja doch schuld?
                if (!(event.which == 115 && event.ctrlKey)) return true;
                save();
                event.preventDefault();
                return false;
            });

Danke für eure Hilfe,
dodo2998

PS: Das IDE könnt ihr auch benutzen, der Code ist im Anhang.

PS2: Das IDE soll auch später Animationen erstellen können, und die auch nach GIF etc. exportieren können. Und irgendwann kommt der Schritt in die 3d-Welt(3D-Sachen können als WebGL, als blender-Datei, als .obj-Datei und als html-Datei(transform) exportiert werden)

EDIT: Der Fehler muss in der keydown-sache liegen. denn die Einrückung funktioniert nur am ende des textes... wäre nett wenn ihr mir bei der Fehlersuche helft.
 

Anhänge

  • index.zip
    3 KB · Aufrufe: 3
Zuletzt bearbeitet:
Werbung:
Der Code funktioniert auch nicht, wenn du alles löschst und neu anfängst zu schreiben... Er funktioniert nur, wenn du am Ende des Textes Enter drückst, weil du am falschen Punkt anfängst die Buchstaben zu prüfen. In der for-Schleife musst du einfach i nicht bei 0 anfangen lassen, sondern bei 1.
Trotzdem würde ich dir empfehlen, etwas zu verwenden, was bereits länger exisitert: http://ace.c9.io/#nav=about
 
Werbung:
Zurück
Oben