O ozzan Medlem sedan maj 2003 8 inlägg Frågan 4 feb. 2004 16:55 #1 Hejsan
Hur ska jag göra om jag vill göra en sida där jag skriver in t.ex. hej och det kommer ut som ifk. Alltså att alla bokstäver förflyttas en ner i alfabetet. Jag hade tänkt mig en sida där det är två <form>s. Ett där man skriver in ordet som ska chiffras och ett, kanske med READONLY taggen, där det kommer ut chiffrat.
Hur löser jag detta? Tänkte någonting i en function(JS) i första <form>en som riktar sig mot den andra <form>en.
Tacksam för alla svar.
mvh Ozzan
E ejick Medlem sedan mars 2001 895 inlägg dectgap Medlem sedan sep. 2002 1 655 inlägg <script type="text/javascript">
var charsLower = "abcdefghijklmnopqrstuvwxyzåäö";
var charsUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ";
function chiffrera(objFrom, objTo){
var strFrom = objFrom.value;
var strTo = "";
var currChar;
for(var i=0; i<strFrom.length; i++){
currChar = strFrom.charAt(i);
if(charsLower.indexOf(currChar)!=-1)
strTo += charsLower.charAt((charsLower.indexOf(currChar)==28)?0:charsLower.indexOf(currChar)+1);
else if(charsUpper.indexOf(currChar)!=-1)
strTo += charsUpper.charAt((charsUpper.indexOf(currChar)==28)?0:charsUpper.indexOf(currChar)+1);
else
strTo += currChar;
}
objTo.value = strTo;
}
</script>
...
<form>
Från:<br />
<textarea name="from"></textarea><br />
Till:<br />
<textarea name="to"></textarea><br />
<br />
<input type="button" onclick="chiffrera(this.form.from, this.form.to)" value="Chiffrera" />
</form>
Det kan förmodligen göras enklare, men detta fungerar iaf.
dectgap Medlem sedan sep. 2002 1 655 inlägg Uppdaterat:
<script type="text/javascript">
var charsLower = "abcdefghijklmnopqrstuvwxyzåäö";
var charsUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ";
function chiffrera(objFrom, objTo, objOffset){
var strFrom = objFrom.value;
var offset = parseInt(objOffset.value) || 0;
var strTo = "";
var currChar, charOffset;
for(var i=0; i<strFrom.length; i++){
currChar = strFrom.charAt(i);
if(charsLower.indexOf(currChar)!=-1)
strTo += charsLower.charAt((charsLower.length+(charsLower.indexOf(currChar)+offset))%charsLower.length);
else if(charsUpper.indexOf(currChar)!=-1)
strTo += charsUpper.charAt((charsLower.length+(charsUpper.indexOf(currChar)+offset))%charsUpper.length);
else
strTo += currChar;
}
objTo.value = strTo;
}
</script>
...
<form>
Från:<br />
<textarea name="from"></textarea><br />
Till:<br />
<textarea name="to"></textarea><br />
<br />
<input type="button" onclick="chiffrera(this.form.from, this.form.to, this.form.offset)" value="Chiffrera" />
<input type="text" name="offset" />
</form>
Nu kan du själv ange hur många tecken alfabetet ska förskjutas. Negativa värden är tillåtna.
O ozzan Medlem sedan maj 2003 8 inlägg Hmm, Det låter bra det! Men kan man göra så att det finns två knappar? En som chiffrar och en som dechiffrar.. Föresten går det på nåt enkelt sätt att göra så att även siffrorna förskjuts?
dectgap Medlem sedan sep. 2002 1 655 inlägg <script type="text/javascript">
var charsLower = "abcdefghijklmnopqrstuvwxyzåäö";
var charsUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ";
function chiffrera(objFrom, objTo, objOffset){
var strFrom = objFrom.value;
var strTo = "";
var currChar, charOffset, numOffset, offset;
offset = parseInt(objOffset.value) || 0;
charOffset = numOffset = offset;
while(charOffset<0)
charOffset += charsLower.length;
while(numOffset<0)
numOffset += 10;
for(var i=0; i<strFrom.length; i++){
currChar = strFrom.charAt(i);
if(charsLower.indexOf(currChar)!=-1)
strTo += charsLower.charAt((charsLower.length+(charsLower.indexOf(currChar)+charOffset))%charsLower.length);
else if(charsUpper.indexOf(currChar)!=-1)
strTo += charsUpper.charAt((charsLower.length+(charsUpper.indexOf(currChar)+charOffset))%charsUpper.length);
else if(/\d/.test(currChar))
strTo += (numOffset+parseInt(currChar))%10;
else
strTo += currChar;
}
objTo.value = strTo;
}
</script>
...
<form>
Från:<br />
<textarea name="from"></textarea><br />
Till:<br />
<textarea name="to" readonly="readonly"></textarea><br />
<br />
<input type="button" onclick="chiffrera(this.form.from, this.form.to, this.form.offset)" value="Chiffrera" />
<input type="text" name="offset" />
</form>
Om du vill dechiffrera något är det bara att skriva -1*nyckeln i rutan bredvid Chiffrera-knappen.
Om du förskjutet alfabetet 2 steg skriver du alltså istället -2 för att dechiffrera.