niklasblohmMedlem sedan okt. 20045 inlägg
hej hej. jag har en liten fråga om if else-satser i javascript. jag har en funktion som visar/gömmer ett lager men man måste klicka på länken som ska köra funktionen två gånger första gången för att det ska fungera. varför då? verkar som om skriptet måste köras en gång för att funktionen ska fungera men det tycker jag känns lite omständigt, borde väl finnas nåt sätt att komma runt det, eller? här är koden iaf:
function adminLayer(id)
{
var id = id + "alternativ";
var leftPos = event.clientX;
var topPos = event.clientY;
var bredd = '95';
if(document.getElementById(id).style.visibility == 'hidden')
{
document.getElementById(id).style.left = leftPos - bredd;
document.getElementById(id).style.top = topPos;
document.getElementById(id).style.visibility = 'visible';
} else
document.getElementById(id).style.visibility = 'hidden';
}
tacksam för svar!
Peter SMedlem sedan dec. 20025 484 inlägg
Hejsan! Välkommen till wF!
Det jag har att anmärka på är att du försöker deklarera en variabel, id, i ett scope där det redan finns en sådan variabel. Sedan skulle du möjligtvis kunna optimera koden en aning.
...
id = id + "alternativ";
var elm = document.getElementById ? document.getElementById(id) : 0;
if (elm)
{
if(elm.style.visibility == 'hidden')
{
elm.style.left = leftPos - bredd;
elm.style.top = topPos;
elm.style.visibility = 'visible';
} else
elm.style.visibility = 'hidden';
}
...
:)
niklasblohmMedlem sedan okt. 20045 inlägg
tack! men jag får det inte att fungera... vad gör raden:
var elm = document.getElementById ? document.getElementById(id) : 0;
?
Jesper TMedlem sedan nov. 20017 058 inlägg
Kollar om webbläsaren rullar med getElementById
Om den gör det: elm=document.getElementById(id)
annars: elm = 0
Peter SMedlem sedan dec. 20025 484 inlägg
Jag hade en högerparentes för mycket i mitt förra inlägg. Testa nu.
:)
niklasblohmMedlem sedan okt. 20045 inlägg
nu har jag testat koden och utan extra högerparentes och det fungerar ju men det löser fortfarande ínte mitt problem att jag måste klicka två gånger första gången jag använder funktionen. jag förstår inte vad jag gör för fel...
niklasblohmMedlem sedan okt. 20045 inlägg
jag löste det!
felet var att av någon anledning tilldelas lagret inbte rätt visibility-värde direkt trots att den är tillsagd att göra det så därför letade if-satsen efter visibility == 'hidden' när värdet i själva verket var tomt...
if(elm.style.visibility == 'hidden' || elm.style.visibility == '') jag la till det här i koden så fungerar det.
tack för hjälpen från alla hur som helst... tack tack