Just nu i M3-nätverket
Gå till innehåll
Fangprod

Välj ur listbox och skicka värdet vidare

Rekommendera Poster

Tar man bort parametern för ShowLayer() så kommer felmeddelande upp att oChk.id is null or not an object

function ShowLayer(){

nId=parseInt(oChk.id);

switch (nId) {

case 1:

sActiveLayer=Roads[nDay];

break;

case 2:

sActiveLayer=Annat[nDay];

break;

}

arrActiveLayers[nId]=sActiveLayer;

parent.mapplet.document.applets[0].getExplorer().setLayerVisibility(sActiveLayer,oChk.checked);

 

}

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Tar man bort parametern för ShowLayer() så kommer felmeddelande upp att oChk.id is null or not an object

function ShowLayer(){

nId=parseInt(oChk.id);

switch (nId) {

case 1:

sActiveLayer=Roads[nDay];

break;

case 2:

sActiveLayer=Annat[nDay];

break;

}

arrActiveLayers[nId]=sActiveLayer;

parent.mapplet.document.applets[0].getExplorer().setLayerVis

ibility(sActiveLayer,oChk.checked);

 

}

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jepp, har lagt den längst upp innan alla funktioner tillsammans med de andra variablerna. Den bör ju egentligen hitta den, men jag testar lite till och kollar igenom koden extra noga.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Aj, jag glömde bort att ShowLayer även anropas från checkboxarna. Då får du ändra lite till. I checkboxarna, ändra onclick-koden till:

 

<input type="checkbox" onClick="oChk=this;ShowLayer();">

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jepp, nu så är felmeddelandet borta. Stort tack hittills!!

 

Men det verkar som setTimeout skickar fel värde till ShowLayer(). Har man den ena kryssrutan( id = 1) ibockad så skickar setTimeout in värde 2 vilket resulterar i att ett nytt kartlager inte tänds. Är den andra kryssrutan(id = 2) ibockad så skickar setTimeout också in värdet 2, vilket i detta fallet bli rätt.

 

Känns som man har gett sig in på omöjligt uppdrag :)

[inlägget ändrat 2005-12-06 16:32:28 av Fangprod]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Japp, jag är lite trött idag (vaken på min 27:e timme nu =). Jag inser nu att det uppstår ett köproblem och överskrivning av variabeln oChk i loopen, innan timern triggats. Måste fundera ut en smartare (eller snarare en fungerande =) lösning.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Ok, hoppas jag hade tungan rätt i mun nu. Har ändrat en hel del nu, så att den nu först lägger in händelserna som skall utföras i en stack. Därefter startas timern för översta händelsen. Sedan får ShowLayer upprepa detta förfarande tills stacken är tom.

 

Har lagt in hela scriptet här: http://877c9172b6a22c92.paste.se/

 

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Hej!

Har jobbat med lite annat den senaste veckan och inte hunnit testa din senaste kod förrän nu. Måste fortfarande tacka för att du har tålamod och tid att hjälpa mig med detta.

 

Jag har som sagt testat din kod och det verkar fortfarande som att appleten inte riktigt förstår vad som händer. När jag bockar i två kryssrutor och sedan byter dag så släcks först lagret 'Annat' och sedan släcks lagret 'Roads' och slutligen så tänds lagret 'Roads' för den nya valda dagen.

Jag har testat och satt in lite alerts på olika ställen och om jag har en här i funktionen ShowLayer:

 

if (oChk=arrChk.pop()) {

nId=parseInt(oChk.id);

if (blHideActive) {

alert(ActiveLayers[nId]);

HideLayer(arrActiveLayers[nId]);

}

setTimeout(ShowLayer,nDelayMS);

}

 

Om jag har en alert här så släcks först lagret 'Annat' och sedan tänds lagret 'Annat' för den nya valda dagen, sedan släcks lagret 'Roads' och sedan tänds lagret 'Roads' för den nya valda dagen. Det är förmodligen så här det är tänkt att det ska fungera. Så frågan är om det går att använda en timer också här innan HideLayer eller nåt annat som gör att det stannar upp eller om man gör något i själva funktionen HideLayer.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...