Simpel script fejl
HejHvorfor får jeg fejlmeddelelsen "kan ikke flytte dertil" (min egen fejlmeddelelse), når jeg klikker:
1) "Arranger artikel" og klik "Ok"
2) "Sektion1"
3) "Emne1"
4) Marker f.eks. "3" og klik på pilen op.
Fejlen ligger vidst nok i variablen "selo", tror jeg.
____________________________________________________
<html>
<head>
<META NAME="Generator" CONTENT="Microsoft FrontPage 5.0">
<meta http-equiv="Content-Language" content="da">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title></title>
<script>
//************************************************************************
// FÆLLES
//************************************************************************
screenTaellerAdminA = 1;
screenTaellerArranger = 1;
artikelTilladt = "false";
emnelTilladt = "false";
sektionTilladt = "false";
ikkePlaceretTilladt = "false";
var gruppe = new Array();
gruppe[1] = new Array();
gruppe[2] = new Array();
gruppe[3] = new Array();
function artikel(artikelnr, titel, forfatter, beskrivelse, filnavn, emnenr, niveau, aendret) {
this.artikelnr= artikelnr;
this.titel= titel;
this.forfatter= forfatter;
this.beskrivelse= beskrivelse;
this.filnavn= filnavn;
this.emnenr= emnenr;
this.niveau= niveau;
this.aendret= aendret;
}
function sektion(sektionnr, titel, niveau, aendret) {
this.sektionnr= sektionnr;
this.titel= titel;
this.niveau= niveau;
this.aendret= aendret;
}
function emne(emnenr, titel, sektionnr, farve, placering, niveau, aendret) {
this.emnenr= emnenr;
this.titel= titel;
this.sektionnr= sektionnr;
this.farve= farve;
this.placering= placering;
this.niveau= niveau;
this.aendret= aendret;
}
function erstat(streng) {
streng = streng.replace(/´/gi,"\'");
streng = streng.replace(/"/gi,"\"");
streng = streng.replace(/<br>/gi, "\n");
return streng;
}
function indlaesInfo (form, i) {
form.artikelnr.value = gruppe[1][i].artikelnr;
form.titel.value = erstat(gruppe[1][i].titel);
form.forfatter.value = erstat(gruppe[1][i].forfatter);
form.beskrivelse.value = erstat(gruppe[1][i].beskrivelse);
form.filnavn.value = gruppe[1][i].filnavn;
}
// ****************************************************************************
// Fælles - Menuer
// ****************************************************************************
function IndlaesFoersteMenu( form ) {
for (var i = 1;i < gruppe[2].length; i++) {
form.sektion.options[i - 1] = new Option( erstat(gruppe[2][i].titel), gruppe[2][i].sektionnr );
}
}
function IndlaesIkkePlaceret( element ) {
y = 0;
for (var i = 1;i < gruppe[1].length; i++) {
if ( gruppe[1][i].emnenr == 0) {
element.options[y] = new Option( erstat(gruppe[1][i].titel), gruppe[1][i].artikelnr);
y++;
}
}
}
function IndlaesMenuer( form, detteElement, naesteElement) {
if (MenuNotEmpty(detteElement)) {
form.ikkePlaceret.selectedIndex = -1;
y = 1;
if (detteElement.name == "sektion") {
arrayNr = 3;
form.emne.length = 0;
form.artikel.length = 0;
document.getElementById("vis" + form.name + "artikel").style.display = 'none';
if (form.name == "Arranger") document.getElementById("visArrangerIkkePlaceret").style.display = 'none';
}
else if (detteElement.name == "emne") {
arrayNr = 1;
if (form.name == "Arranger") {
if (form.valg[0].checked)
document.getElementById("visArrangerartikel").style.display = 'block';
document.getElementById("visArrangerikkePlaceret").style.display = 'block';
checkPile(form, detteElement);
}
}
for (var i = 1;i < gruppe[arrayNr].length; i++) {
if ( detteElement.value == gruppe[arrayNr][i][detteElement.name + "nr"]) {
naesteElement.options[gruppe[arrayNr][i].niveau - 1] = new Option( erstat(gruppe[arrayNr][i].titel), gruppe[arrayNr][i][naesteElement.name + "nr"]);
y++;
}
}
/*for (var i = 1;i < gruppe[2].length; i++) {
naesteElement.options[i - 1] = new Option( gruppe[2][i].titel, gruppe[2][i].sektionnr );
}*/
// **** UNDTAGELSERNE ****
if (form.valg[0].checked && naesteElement.name == "artikel" || form.name == "Arranger" && naesteElement.name == "artikel" && y == 1 ) {
if (form.valg[0].checked && naesteElement.name == "artikel") {
//Ingenting
}
if (form.name == "Arranger" && naesteElement.name == "artikel" && y == 1 ) {
form.artikel.length = 0;
if (document.Status.showHelp.checked)
alert("Dette emne er tomt. Du kan flytte artikler til emnet ved at dobbeltklikke på de artikler, som findes under Ikke Placeret.");
}
}
else if (y > 1) {
document.getElementById("vis" + form.name + naesteElement.name).style.display = 'block';
}
else {
document.getElementById("vis" + form.name + naesteElement.name).style.display = 'none';
alert("Det valgte punkt er tomt - prøv med et andet.");
}
}
}
function MenuNotEmpty ( element ) {
if (element.selectedIndex > -1 && element.selectedIndex < element.options.length)
return true;
}
// ****************************************************************************
// Fælles - Sortering
// ****************************************************************************
function ArrangerResten (element) {
//Resten skal have nye værdier, da en artikel er blevet taget ud
if (element.name == "artikel" || element.name == "ikkePlaceret") {
arrayNr = 1;
noegle = "artikelnr";
}
else
if (element.name == "emne") {
arrayNr = 3;
noegle = "emnenr";
}
for (var y = 0; y < element.length; y++) {
for (var i = 1;i < gruppe[arrayNr].length; i++) {
if (gruppe[1][i][noegle] == element.options[y].value) {
gruppe[1][i].niveau = y + 1;
gruppe[1][i].aendret = "ja";
}
}
}
}
function FindAendrede (form) {
aendret = "";
for (var i = 1;i < gruppe[1].length; i++) {
if (gruppe[1][i].aendret == "ja") {
common = gruppe[1][i].artikelnr + "-" + gruppe[1][i].emnenr + "-" + gruppe[1][i].niveau;;
if (aendret == "") aendret = common;
else aendret = aendret +","+ common;
}
}
if (aendret != "") form.aendret.value = aendret;
}
// ****************************************************************************
// Fælles - Diverse
// ****************************************************************************
function checkAabneOpgaver (form) {
if ("screenTaeller" + form.name > 1) {
alert("Du kan ikke starte på nye opgaver, mens du stadig arbejder på en. Tryk evt. 'Annuller'.");
return false;
}
else return true;
}
function skriv(placering, tekst) {
if (document.getElementById) document.getElementById(placering).innerHTML = tekst;
else if (document.all) document.all.placering.innerHTML = tekst;
else if (document.layers) document.lag1.document.write(txt);
}
// ****************************************************************************
// ARRANGERARTILKER
// ****************************************************************************
function hovedFunktionArranger() {
if (checkAabneOpgaver(document.Arranger)) {
if (document.Arranger.valg[0].checked) {
if (screenTaellerArranger == "1") {
document.getElementById("visArrangerValg").style.display = 'none';
document.getElementById("visArrangersektion").style.display = 'block';
document.getElementById("visArrangerArtikelPile").style.display = 'block';
skriv("tekst1Arranger", "Du har valgt at arrangere en artikel. Hvor er artiklen placeret?");
IndlaesFoersteMenu(document.Arranger);
artikelTilladt = "true";
ikkePlaceretTilladt = "true";
IndlaesIkkePlaceret(document.Arranger.ikkePlaceret);
LaasAlle(document.Arranger);
screenTaellerArranger++;
return false;
}
else if (screenTaellerArranger == "2") {
FindAendrede(document.Arranger);
}
}
if (document.Arranger.valg[1].checked) {
if (screenTaellerArranger == "1") {
document.getElementById("visArrangerValg").style.display = 'none';
document.getElementById("visArrangersektion").style.display = 'block';
document.getElementById("visArrangerEmnePile").style.display = 'block';
skriv("tekst1Arranger", "Du har valgt at arrangere et emne. Hvor er emnet placeret?");
IndlaesFoersteMenu(document.Arranger);
emneTilladt = "true";
artikelTilladt = "false";
ikkePlaceret = "true";
IndlaesIkkePlaceret(document.Arranger.ikkePlaceret);
LaasAlle(document.Arranger);
screenTaellerArranger++;
return false;
}
}
}
else return false;
}
function LaasAlle( form ) {
form.OpEmne.disabled = true;
form.NedEmne.disabled = true;
form.Op.disabled = true;
form.Ned.disabled = true;
}
function checkPile (form, element) {
if ( MenuNotEmpty(element)) {
if (element.name == "emne") {
//form.artikel.selectedIndex = -1;
form.ikkePlaceret.selectedIndex = -1;
if (element.selectedIndex == 0 )
form.OpEmne.disabled = true;
else
form.OpEmne.disabled = false;
if (element.selectedIndex == element.options.length - 1 )
form.NedEmne.disabled = true;
else
form.NedEmne.disabled = false;
}
if (element.name == "artikel") {
form.ikkePlaceret.selectedIndex = -1;
if (element.selectedIndex == 0 )
form.Op.disabled = true;
else
form.Op.disabled = false;
if (element.selectedIndex == element.options.length - 1 )
form.Ned.disabled = true;
else
form.Ned.disabled = false;
}
if (element.name == "ikkePlaceret") {
form.Op.disabled = true;
form.Ned.disabled = true;
form.artikel.selectedIndex = -1;
}
}
}
var sel;
var selo;
function checkSel ( frm ) {
sel = frm.artikel.selectedIndex;
selo = frm.artikel;
if ( 0 > sel ) {
alert( "der skal vælges en sang først" );
return false;
};
return true;
}; //end chackSel ( Form object ) -> boolean
function checkDest ( dest ) {
if ( 0>dest || dest >= selo.length ) {
alert( "sangen kan ikke flyttes derhen" );
return false;
};
return true;
}; //end checkDest ( integer ) -> boolean
function ombyt ( fra, til ) {
var tmpTxt = selo[fra].text;
selo[fra].text = selo[til].text;
selo[til].text = tmpTxt;
var tmpVal = selo[fra].value;
selo[fra].value = selo[til].value;
selo[til].value = tmpVal;
return til;
}; //end ombyt ( integer, integer )
function findHead ( sel ) { // find den forreste i denne gruppe
//alert(sel);
while ( sel > 0 && selo[sel].value.substring(0,1)=='2' ) sel -= 1;
//alert(sel);
return sel;
}; //end findHead ( number ) -> number
function findTail ( sel ) { // find den bagerste i gruppen
while ( selo.length-1 > sel && selo[sel+1].value.substring(0,1)=='2' ) sel += 1;
return sel;
}; //end findTail ( number ) -> number
function flytOp ( frm ){
if ( checkSel( frm ) ) {
var forste = findHead( sel );
var sidste = findTail( sel );
if ( forste > 0 ) {
var dest = findHead( forste-1 ); // find første i forrrige gruppe
var nyIndex = dest;
for (var i=forste; sidste>=i; i++,dest++ ) {
for (var j=i; j>dest; ) j = ombyt( j, j-1 );
}
frm.artikel.selectedIndex = nyIndex; // ender med forreste i gruppen valgt på ny plads
} else {
alert( "kan ikke flytte derhen" )
}
}
}; //end flytOp( form object )
function flytNed( frm ) {
if ( checkSel( frm ) ) {
var forste = findHead( sel );
var sidste = findTail( sel );
if ( selo.length-1 > sidste ) {
var dest = findTail( sidste+1 ); // find sidste i senere gruppe
for (var i=sidste; i>=forste; i--,dest-- ) {
for (var j=i; dest>j; ) j = ombyt( j, j+1 );
}
frm.artikel.selectedIndex = dest+1; // ender med forreste i gruppen valgt på ny plads
} else {
alert( "kan ikke flytte derhen" )
}
}
}; //end flytNed( form object )
function flyt(form, element) {
if ( MenuNotEmpty (element)) {
//Opdaterer den enkelte flytning af artiklen
if (element.name == "ikkePlaceret") {
for (var i = 1;i < gruppe[1].length; i++) {
if (gruppe[1][i].artikelnr == document.Arranger.ikkePlaceret.value) {
gruppe[1][i].emnenr = document.Arranger.emne.value;
gruppe[1][i].niveau = document.Arranger.artikel.length + 1;
gruppe[1][i].aendret = "ja";
}
}
}
else if (element.name == "artikel") {
for (var i = 1;i < gruppe[1].length; i++) {
if (gruppe[1][i].artikelnr == document.Arranger.artikel.value) {
gruppe[1][i].emnenr = 0;
gruppe[1][i].niveau = 0;
gruppe[1][i].aendret = "ja";
}
}
}
sel1 = (element.name == "artikel") ? form.artikel : form.ikkePlaceret;
sel2 = (element.name == "artikel") ? form.ikkePlaceret : form.artikel;
ind = sel1.selectedIndex;
sel2.options.length += 1;
sel2.options[sel2.options.length - 1].text = sel1.options[ind].text;
sel2.options[sel2.options.length - 1].value = sel1.options[ind].value;
sel1.options[ind] = null;
ArrangerResten (element);
LaasAlle(document.Arranger);
}
}
function fjern ( selObj ) {
if ( checkSel( selObj ) )
if ( selo.length > 1 ) {
while ( selo.length>sel+1 ) sel = ombyt( sel, sel+1 );
selo.length = sel;
selObj.selectedIndex = -1;
}
};
function FokusIkkePlaceret (form, element) {
if (MenuNotEmpty(element)) {
form.sektion.selectedIndex = -1;
form.emne.length = 0;
form.artikel.length = 0;
}
}
</script>
</head>
<body>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
<tr>
<td width="100%" valign="top" colspan="3">
</td>
</tr>
<tr>
<td width="33%" valign="top">
</td>
<td width="25%" valign="top">
<form method="POST" name="Arranger" action="index.asp" onSubmit="return hovedFunktionArranger();">
<fieldset style="padding: 2">
<legend align="center"><font face="Trebuchet MS">Arrangér </font></legend>
<blockquote>
<div id="visArrangerValg" style="display:block; position:relative;">
<p><font face="Trebuchet MS" size="2"><br>
<input type="radio" value="ArrangerArtikel" name="valg" onClick="document.Arranger.Ok.disabled = false;">Arranger
artikel</font></p>
<p><font face="Trebuchet MS" size="2">
<input type="radio" value="ArrangerEmne" name="valg" onClick="document.Arranger.Ok.disabled = false;">Arranger
emne</font></p>
<p><font face="Trebuchet MS" size="2">
<input type="radio" value="ArrangerSektion" name="valg" onClick="document.Arranger.Ok.disabled = false;">Arranger
sektion</font></p>
</div>
<font face="Trebuchet MS"><font size="2"><div id="tekst1arranger" style="display:block; position:relative;"><layer id="lag1"></layer></div></font>
<div id="visArrangersektion" style="display:None; position:relative;">
<p><font size="2">Sektion<br>
</font>
<select size="5" style="width: 120px" name="sektion" onclick="self.IndlaesMenuer(this.form, this, this.form.emne);">
</select></p>
</div>
<div id="visArrangeremne" style="display:None; position:relative;">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="88" id="AutoNumber3">
<tr>
<td width="120">
<font face="Trebuchet MS"><font size="2">Emne<br>
</font>
<select size="5" style="width: 120px" name="emne" onclick="self.IndlaesMenuer(this.form, this, this.form.artikel);">
</select></font></td>
<td width="19">
<div id="visArrangerEmnePile" style="display:none; position:relative;">
<font face="Trebuchet MS">
<button name="OpEmne" style="width: 19; height: 19" value="OpEmne" onclick="flytOp(this.form, this.form.emne)">
<font face="Marlett" size="2">5</font></button><br>
<button name="NedEmne" style="width: 19; height: 19" value="NedEmne" onclick="flytNed(this.form, this.form.emne)">
<font face="Marlett" size="2">6</font></button>
</font>
</div>
</td>
</tr>
</table>
</div>
<div id="visArrangerartikel" style="display:None; position:relative;">
<p>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="58" id="AutoNumber2">
<tr>
<td width="33" height="19" align="left" valign="top">
<font face="Trebuchet MS">
<font face="Trebuchet MS" size="2">Artikel</font><select name="artikel" style="width: 120px" onDblClick="flyt(this.form, this);" onClick="forsinkelse = setTimeout('self.checkPile(document.Arranger, document.Arranger.artikel);', 50);" size=5></select>
</select></font></td>
<td width="25">
<div id="visArrangerArtikelPile" style="display:none; position:relative;">
<font face="Trebuchet MS">
<button name="Op" style="width: 19; height: 19" value="Op" onclick="flytOp(this.form)">
<font face="Marlett" size="2">5</font></button><br>
<button name="Ned" style="width: 19; height: 19" value="Ned" onclick="flytNed(this.form)">
<font face="Marlett" size="2">6</font></button>
</font>
</div>
</td>
</tr>
</table>
</div>
<div id="visArrangerIkkePlaceret" style="display:None; position:relative;">
<p><hr color="#C0C0C0">
<font size="2">Ikke placeret</font><br>
<select name="ikkePlaceret" style="width: 120px" onDblClick="flyt(this.form, this);" onClick="forsinkelse = setTimeout('self.checkPile(document.Arranger, document.Arranger.ikkePlaceret);', 50);" size=5>
</select>
</p>
</div>
<p align="left">
<input type="submit" value=" Ok " name="Ok" disabled="true"><font size="2">
</font>
<input type="button" value="Annullér" name="Annuller" onClick="location.href='index.asp?status=Handlingen blev annulleret!'";></p>
</blockquote>
</font>
<input type="hidden" name="aendret" value=" ">
</fieldset></form>
</fieldset>
</td>
<td width="34%" valign="top">
</td>
</tr>
</table>
<script>gruppe[1][1]=new artikel ("262","1","", "", "", "3", "1");gruppe[1][2]=new artikel ("263","2","", "", "", "3", "2");gruppe[1][3]=new artikel ("264","3","", "", "", "3", "3");gruppe[2][1]=new sektion("1","Sektion1","1");gruppe[2][2]=new sektion("2","Sektion2","2");gruppe[2][3]=new sektion("3","Sektion3","3");gruppe[2][4]=new sektion("4","Sektion4","4");gruppe[3][1]=new emne("3","Emne1", "1", "1","1","1");gruppe[3][2]=new emne("4","Emne2", "2", "1","2","1");gruppe[3][3]=new emne("5","Emne3", "3", "1","3","1");gruppe[3][4]=new emne("7","Emne3½", "3", "1","4","2");</script>
</body>
</html>
