webForumDet fria alternativet

en fråga om if else

JavaScript

6 svar · 252 visningar · startad av niklasblohm

Medlem sedan okt. 20045 inlägg
Frågan#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!

Medlem sedan dec. 20025 483 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';
}
...

:)

Medlem 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;
?

Medlem sedan nov. 20017 144 inlägg
#4

Kollar om webbläsaren rullar med getElementById
Om den gör det: elm=document.getElementById(id)
annars: elm = 0

Medlem sedan dec. 20025 483 inlägg
#5

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

:)

Medlem 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...

Medlem 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

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)