Optimering av javascript. Någon som är sugen?

Permalänk

Optimering av javascript. Någon som är sugen?

Hej.
Jag gillar att skriva script och koder av olika slag.
När "programmet" fungerar som jag vill så vill jag alltid gör det så snabbt, okompleserat, och litet som möjligt, jag vill asså optimera koden.
Men i och med att jag inte är något proffs på något sätt så kan jag inte veta om jag har lyckats optimera det maximalt.

Jag undrar ifall det finns någon som är galen nog att denne har lust att optimera min kod. Inte för att jag är lat, utan för jag vill se olika anternativ av hur man kan skriva koden och så, lära mig helt enkelt hur bra man kan lyckas.

Jag har bara skrivit klart koden nu, så troligen finns det mycket att skriva om.

*Förklaring av programmet.*
Det är ett javascript.
Sidan innehåller en textbox som startar med stringen "xx:xx".
Det är meningen att man ska skriva in ett klockslag i boxen. ex. 13:37.
När man trycker på en siffra så ersätts ett x av denna siffran.
Så efter den första inskrivna siffran så bör det stå. "1x:xx". 1x:xx -> 13:xx osv...
Suddar man så ersätts den senaste inskrivna siffran av ett x. 13:3x -> 13:xx. osv...
Man kan inte skriva in klockslag som inte finns. som 24:01, 01:99. osv...

Jag upptäkte att jag inte fixat koden så att den funkar bra i IE. Det är Firefox som har gällt för mig. Men men, det kanske någon vill hjälpa med också

Jag har inte kommenterat koden. Hoppas det inte gör så mycket.

Tror inte jag missat något. Tack. Här kommer koden!

<script type="text/javascript">

var text=new Array();
text[0]=":";
text[1]="x";
text[2]="x";
text[3]="x";
text[4]="x";
var textarreynum = 1;

function check_klock()
{
if(text[1] > 2) {text[1] = 2;}
if(text[1] == 2 && text[2] > 4) {text[2] = 4;}
if(text[1] == 2 && text[2] == 4 && text[3] > 0) {text[3] = 0;}
if(text[1] == 2 && text[2] == 4 && text[3] == 0 && text[4] > 0) {text[4] = 0;}
if(text[3] > 5) {text[3] = 5;}
}

function setText()
{
document.all['a'].value = ""+text[1]+""+text[2]+""+text[0]+""+text[3]+""+text[4];
}

function timer()
{
text[0]=":";
check_klock();
setText();

if(textarreynum < 1)
{
textarreynum = 1;
}
if(textarreynum > 4)
{
textarreynum = 5;
}

min_timer = setTimeout("timer();",1)
}

function chartest(e)
{
var keychar;

if(window.event) // IE
{
keychar = e.keyCode;
}
else if(e.which) // Netscape/Firefox/Opera
{
keychar = e.which;
}

switch(keychar)
{
case 8 : text[textarreynum-1] = "x"; textarreynum--; break;

case 37 : break;
case 39 : break;

case 46 : break;

case 48 : text[textarreynum] = String.fromCharCode(keychar); textarreynum++; break;
case 49 : text[textarreynum] = String.fromCharCode(keychar); textarreynum++; break;
case 50 : text[textarreynum] = String.fromCharCode(keychar); textarreynum++; break;
case 51 : text[textarreynum] = String.fromCharCode(keychar); textarreynum++; break;
case 52 : text[textarreynum] = String.fromCharCode(keychar); textarreynum++; break;
case 53 : text[textarreynum] = String.fromCharCode(keychar); textarreynum++; break;
case 54 : text[textarreynum] = String.fromCharCode(keychar); textarreynum++; break;
case 55 : text[textarreynum] = String.fromCharCode(keychar); textarreynum++; break;
case 56 : text[textarreynum] = String.fromCharCode(keychar); textarreynum++; break;
case 57 : text[textarreynum] = String.fromCharCode(keychar); textarreynum++; break;

default : alert("Du får inte använda bokstäver i tiden");

}
}

</script>
<body onload="timer();">
<form>
<input name="a" type="text" onkeypress="chartest(event)" />
</form>

Visa signatur

"SönderCrew" Is the shit

Permalänk
Medlem

<script type="text/javascript"> var inputText = new Array(":", "x", "x", "x", "x"); var currentInputTextNumber = 1; function updateTextbox() { document.getElementById("my_textbox").value = inputText[1] + inputText[2] + inputText[0] + inputText[3] + inputText[4]; } function validateClock() { if(inputText[1] > 2) inputText[1] = 2; if(inputText[1] == 2 && inputText[2] > 4) inputText[2] = 4; if(inputText[1] == 2 && inputText[2] == 4 && inputText[3] > 0) inputText[3] = 0; if(inputText[1] == 2 && inputText[2] == 4 && inputText[3] == 0 && inputText[4] > 0) inputText[4] = 0; if(inputText[3] > 5) inputText[3] = 5; } function timer() { inputText[0] = ":"; validateClock(); updateTextbox(); if(currentInputTextNumber < 1) currentInputTextNumber = 1; else if(currentInputTextNumber > 4) currentInputTextNumber = 5; min_timer = setTimeout("timer()", 1) } function charTest(e) { var keyChar; if(window.event) keyChar = e.keyCode; else if(e.which) keyChar = e.which; switch(keyChar) { case 8: inputText[currentInputTextNumber - 1] = "x"; currentInputTextNumber--; break; case 37: case 39: case 46: break; case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: inputText[currentInputTextNumber] = String.fromCharCode(keyChar); currentInputTextNumber++; break; default: /* Inga bokstäver! */ break; } } </script>

Gjorde bara mindre förändringar lite fort men det går säkert att göra ännu bättre om man bara orkar sätta sig in mer ordentligt.

Permalänk

åh.
va trevligt att man fick respons ! var lite osäker på om någon hade lusten att göra något!

Det var många bra ändringar tycker jag.
Tack.

fortsätt ni som är på!

Visa signatur

"SönderCrew" Is the shit

Permalänk
Medlem

<html> <head> <script type="text/javascript"> function keypress(e) { var limit = "29359".split(""); var keyValue = (e.which || e.keycode) - 48; var a = document.getElementById("a"); var v = a.value.split(""); var pos = a.value.indexOf("x"); var pos2 = (pos<0) ? 5 : pos; if ( keyValue == -40) { var pos3 = ((pos2 == 3) ? 2 : pos2); v[pos3-1]='x'; } else if (keyValue>=0 && keyValue<=9) { if (a.value[0]==2) { limit[1] = limit[2]; } if (keyValue <= limit[pos] ) { v[pos]=keyValue; } } a.value=v.join(""); return false; } </script> </head> <body> <form> <input id="a" name="a" type="text" value="xx:xx" onkeypress="return keypress(event);" /> </form> </body> </html>

Går väl att göra snyggare, fixa vettiga variabelnamn, och kommentera... Men det borde väl inte vara så svårt att förstå vad koden gör ändå.

Visa signatur

The difference between stupidity and genius - the latter has limits