Forum > Klientspråk > JavaScript
Hej!
Har denna kod för att visa och dölja innehåll. Men jag vill att man bara ska kunna ha ett "lager" öppet i taget. Någon som vet hur jag ska göra?
<script language="JavaScript" type="text/javascript"> function openWin(url, w, h, scroll){
if (!scroll) {
scroll=0;
}
else {
scroll=1;
}
t = (screen.height - h)/2;
l = (screen.width - w)/2;
popup=window.open(url, '', 'width='+w+', height='+h+', top='+t+', left='+l+', status=1, scrollbars='+scroll);
popup.focus();
}
function expandera(id) {
get_id = document.getElementById('exp'+id).style.display;
if (get_id == 'block') {
document.getElementById('exp'+id).style.display="none";
}
else {
document.getElementById('exp'+id).style.display="block";
}
}
</script>
Vilken kod?
Okej, du infogar en hel del irrelevant kod, men problemet med din kod är att du inte har ett "index" eller en "startpunkt" på vad som är menyn, för att göra det så mycket enklare: Kör Jquery eller annat ramverk för att mer kontroll på dina DOM objekt, sen vad är det för HTML kod?
Men om du måste behålla den kod du har idag:
var oldObject;
function expandera(id) {
if(oldObject==null) {
oldObject = document.getElementById('exp'+id);
oldObject.style.display ="block";
}
else {
//There is an old object showing, hide it!
oldObject.style.display = "none";
oldObject = null;
//Call the function again to set a new object to show
expandera(id);
}
}
Okej, du infogar en hel del irrelevant kod, men problemet med din kod är att du inte har ett "index" eller en "startpunkt" på vad som är menyn, för att göra det så mycket enklare: Kör Jquery eller annat ramverk för att mer kontroll på dina DOM objekt, sen vad är det för HTML kod?
Men om du måste behålla den kod du har idag:
var oldObject;
function expandera(id) {
if(oldObject==null) {
oldObject = document.getElementById('exp'+id);
oldObject.style.display ="block";
}
else {
//There is an old object showing, hide it!
oldObject.style.display = "none";
oldObject = null;
//Call the function again to set a new object to show
expandera(id);
}
}
Jag kör på samma kod. Din kod fungerade. Tack. Men hur gör jag för att "lagret" ska stängas igen när man trycker på det?
Kan verkligen inget om detta.
var oldObject;
function expandera(id) {
if(oldObject==null) {
oldObject = document.getElementById('exp'+id);
oldObject.style.display ="block";
}
else {
//There is an old object showing, hide it!
oldObject.style.display = "none";
var oldId = oldObject.id;
oldObject = null;
if(oldId!='exp'+id) // If oldId is different from the new one, expand it.
expandera(id);
}
}