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';
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';
}
...
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...
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