<dj_uncas@aoa.dk> writes:
> Jeg er i gang med et nyhedssystem, og havde tænkt mig noget lignenden
> følgende: En menu med links til de forskellige nyhedsartikler til venstre,
> og en box til højre med artiklerne. Teksten i denne box skal dog først vises
> når man klikker på et link.
> Jeg har lavet noget, men når man klikker på et nyt link står teksten der
> stadig, og det er meningen at den ene tekst skal "afløse" den anden.
Så problemet er at man kun viser, og ikke skjuler?
> <script>
Type-attributten er påkrævet i HTML 4, så brug
<script type="text/javascript">
> // quick browser tests
> var ns4 = (document.layers) ? true : false;
> var ie4 = (document.all && !document.getElementById) ? true : false;
> var ie5 = (document.all && document.getElementById) ? true : false;
> var ns6 = (!document.all && document.getElementById) ? true : false;
Bare du er klar over at der er andre browsere end de nævnte. Jeg foreslår
at du bare bruger dette:
---
/** finder et element ud fra dets unikke id */
function getElement(id) {
if (document.getElementById) {
return document.getElementById(id);
} else if (document.all) {
return document.all[id];
} else if (document.layers) {
return document.layers[id];
} else {
return null; // beklager, denne browser fatter ikke noget.
}
}
function getStyle(element) {
if (element.style) {
return element.style;
} else {
return element;
}
}
var prevVisible;
function show(visible, id) {
var element = getElement(id);
if (prevVisible) { // skjule den tidligere synlige
getStyle(prevVisible).visibility = "hidden";
}
if (element && visible) { // hvis nyt element fundet
getStyle(element).visibility = "visible";
prevVisible = element;
}
}
}
>
> function show(sw,obj) {
> // show/hide the divisions
> if (sw && (ie4 || ie5) ) document.all[obj].style.visibility = 'visible';
> if (!sw && (ie4 || ie5) ) document.all[obj].style.visibility = 'hidden';
> if (sw && ns4) document.layers[obj].visibility = 'visible';
> if (!sw && ns4) document.layers[obj].visibility = 'hidden';
Her mangler du en case for "ns6" hvor du bruger getElemenetById.
> <div id="contents">
> <a href="#" onClick="show(true,'div1');">Nyhed 1</a><br /><br />
Jeg anbefaler at have noget andet end "#" i href'en. Hvis folk når til
din side uden Javascript slået til, så skal der stadig ske noget når
de klikker på linket.
En mulighed er at lade alle nyhedderne være synlige fra start, og at
bruge javascript til at gøre dem skulte når siden loader. Så kan du
have href="#div1", så det at klikke på linket i det mindste scroller
ned til den aktuelle nyhed.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'