Jeg vil mene at dette script er hvad du spørger efter - det fungerer således:
Du kan selv indtaste basis-sætingen eller bruge den, der er sat fra starten.
Herefter kan du bladre igennem ordene og ændre dem hver især. Du kan tilføje ekstra ord i sætningen ved at udskifte ét ord med flere, og du kan ligeledes fjerne et ord ved at udskifte det med en tom tekst-streng.
Scriptet tolker bogstaver, tal, bindestreg og apostrof som værende gyldige bestanddele af et ord; alle andre tegn vil blive betragtet som seperatorer, og man vil derfor ikke kunne ændre disse selektivt. Kombinerede tegn som fx. \"é\" og \"ü\" hører også til i denne kategori. Hvis du ønsker at bruge den slags tegn må du selv kode det ind - jeg blev efterhånden træt af at sidde med hovedet nede i ASCII-tabellen :).
Denne bunke kode burde virke i NS4, IE4/5 og NS6/Mozilla. Jeg har dog kun testet i NS4.08, IE5.01 og NS6.01.
Nå, ikke mere snik-snak:
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<HTML>
<HEAD>
<TITLE></TITLE>
<STYLE TYPE=\"text/css\">
<!--
BODY, INPUT {font: 8pt Verdana, sans-serif}
-->
</STYLE>
</HEAD>
<BODY ONLOAD=\"alterString()\">
Aktuel sætning:
<SPAN ID=\"mainDisplay\"></SPAN>
<LAYER NAME=\"mainDisplay\"></LAYER><BR><BR>
<FORM NAME=\"myForm\">
<INPUT NAME=\"mainInput\" TYPE=\"text\" VALUE=\"\" SIZE=70>
<INPUT NAME=\"mainButton\" TYPE=\"button\" VALUE=\"Udskift sætning\" ONCLICK=\"alterString(this)\">
<BR><BR>
<INPUT TYPE=\"button\" VALUE=\"|<<\" ONCLICK=\"setWInputToWIndex(0)\">
<INPUT TYPE=\"button\" VALUE=\"<\" ONCLICK=\"browseWords(-1)\">
<INPUT NAME=\"wordInput\" TYPE=\"text\" VALUE=\"\" SIZE=30>
<INPUT TYPE=\"button\" VALUE=\">\" ONCLICK=\"browseWords(1)\">
<INPUT TYPE=\"button\" VALUE=\">>|\" ONCLICK=\"setWInputToWIndex(wordIndex.length - 1)\">
<INPUT NAME=\"wordButton\" TYPE=\"button\" VALUE=\"Udskift ord\" ONCLICK=\"alterString(this)\">
</FORM>
<SCRIPT LANGUAGE=\"javascript\" TYPE=\"text/javascript\">
<!--
var DOM = (document.getElementById); //IE5+ og NS6/Mozilla
var IE4 = (document.all && !DOM);
var NS4 = (document.layers);
var myForm = document.forms[\"myForm\"];
var mainInput = myForm.elements[\"mainInput\"];
var wordInput = myForm.elements[\"wordInput\"];
var mainButton = myForm.elements[\"mainButton\"];
var wordButton = myForm.elements[\"wordButton\"];
var mainDisplay = (DOM) ? document.getElementById(\"mainDisplay\") :
(IE4) ? document.all(\"mainDisplay\") :
(NS4) ? document.layers[\"mainDisplay\"] : null;
var strArr = new Array();
var wordIndex = new Array();
var currWrdIndex = 0;
function browseWords(offset){
var n = (currWrdIndex + offset < 0) ? 0 :
(currWrdIndex + offset > wordIndex.length - 1) ? wordIndex.length - 1 : currWrdIndex + offset;
setWInputToWIndex(n);
}
function checkChar(c){
cCode = c.charCodeAt(0);
return (cCode == 39 || cCode == 45 ||
(cCode >= 48 && cCode <= 57) ||
(cCode >= 65 && cCode <= 90) ||
(cCode >= 97 && cCode <= 122)||
cCode == 197 || cCode == 198 ||
cCode == 216 || cCode == 229 || // returnerer \'true\' hvis tegnet er
cCode == 230 || cCode == 248); // et bogstav (inkl æ,ø,å) eller et tal
}
function buildArr(str){
strArr = new Array();
wordIndex = new Array();
var word = \"\";
var i = 0, j = 0;
for (var n = 0; n < str.length; n++){
var ch = str.charAt(n);
if (checkChar(ch)) word += ch;
else {
if (word != \"\"){
wordIndex[j++] = i;
strArr[i++] = word;
}
strArr[i++] = ch;
word = \"\";
}
}
if (word != \"\"){
wordIndex[j] = i;
strArr[i] = word;
}
}
function buildStr(){
var str = \"\";
for (var i = 0; i < strArr.length; i++)
str += strArr[i];
return str;
}
function setWInputToWIndex(n){
wordInput.value = strArr[wordIndex[currWrdIndex = n]];
}
function setMainDisplay(str){
if (DOM || IE4) mainDisplay.innerHTML = \"<B>\" + str + \"</B>\";
else if (NS4){
mainDisplay.document.open();
mainDisplay.document.write(\"<SPAN STYLE=\'font:bold 8pt Verdana,sans-serif\'>\" + str + \"</SPAN>\");
mainDisplay.document.close();
}
}
function alterString(button){
if (button == mainButton){
setMainDisplay(mainInput.value);
buildArr(mainInput.value);
setWInputToWIndex(0);
} else if (button == wordButton){
strArr[wordIndex[currWrdIndex]] = wordInput.value;
var str = buildStr();
setMainDisplay(str);
buildArr(str);
setWInputToWIndex(currWrdIndex);
} else {
var str = \"Det sjove ved vinteren er at bedstemor ikke griller pøller på stranden.\";
setMainDisplay(str);
buildArr(str);
setWInputToWIndex(0);
}
}
//-->
</SCRIPT>
</BODY>
</HTML>
PS: Hvis nogen behøver hjælp til at forstå min spaghetti-kode, kan nogen enten skrive det som en kommentar her på siden, eller evt. emaile mig på kdb@ofir.dk (jeg er godt nok inde ved militæret i de næste 8 månder :(((( så jeg kan kun svare i weekenderne).
PPS: Mon ikke der burde falde et par point af til den ydmyge forfatter for det her...?
PPPS: nikolajdu >> En idiot siger du? så er det da heldigt at netscape tilbyder en komplet reference over javascript inkl. alt det DOM relaterede:
http://developer.netscape.com/docs/manuals/js/client/jsref/contents.htmPPPPS: Er der nogen der kender et hack som gør at man kan klippe og klistre tekst ind i svarboksen? Det tog sat\'me lang tid at skrive hele koden forfra =)