Hur döljer jag ett lager (sätter display till none) när man klickar utanför lagret?
Har ett lager med information i som visas via en länk. Vill kunna dölja detta lagret (stänga det) när man klickar utanför. Innanför ska klick fungera som vanligt.
Dölja lager vid klick utanför
5 svar · 473 visningar · startad av jonne
En tanke är att i ett javascript ha uttrycket
window.onclick=foo; //foo = valfri function
Men sen hur den reagerar när du klickar i lagret vet jag inte, du kan köra lite alerts för att se vilket som reagerar först. Om det fungerar och den anropar lagret först och sedan stänger det p.g.a. window.onclick så kan du flagga så att den inte stänger när det inte ska det.
Lekte lite lokalt och fick det att lira
<html>
<head>
<title>test</title>
</head>
<body>
<script type="text/javascript">
window.onclick = test;
var dontHide = false;
function test(){
if(dontHide == false){
alert("body hit!");
}
dontHide = false;
}
function runDiv(){
alert("layer clicked");
dontHide = true;
}
</script>
<div style="background-color: red; border: black 1px solid; width: 10em; height: 10em;" onclick="runDiv();">
Test
</div>
</body>
</html>
Gick inte lika bra i IE, men eftersom IE har en förmåga att bete sig ganska annorlunda när man kör direkt mot filsystemet så tror jag att det kan ställa till det lite
Byt till document.onclick.
Jag kan inget om js, men skulle det inte funka med "onBlur" bara? Eller måste det klickas utanför för att det ska försvinna?
Vore onblur definierad för <div> så skulle det möjligtvis fungera.