webForumDet fria alternativet

en fråga om if else

6 svar · 252 visningar · startad av niklasblohm

niklasblohmMedlem sedan okt. 20045 inlägg
#1

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
#2

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
#3

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
#4

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
#5

Jag hade en högerparentes för mycket i mitt förra inlägg. Testa nu.

:)

niklasblohmMedlem sedan okt. 20045 inlägg
#6

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
#7

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

Genererad på 367 ms · cache AV · v20260730165559-full.f96bc7eb