Avatar billede eksperten1 Nybegynder
29. september 2002 - 00:53 Der er 13 kommentarer og
1 løsning

showhide funktion

I en iframe har jeg defineret disse styles
<style type="text/css">
.dna {cursor:crosshair}
.toggle {color: GREEN; background-color: GREEN; layer-background-color: GREEN; border: 1px none GREEN; visibility: VISIBLE;}
.12 {color: RED; background-color: RED; layer-background-color: RED; border: 1px none RED; visibility: VISIBLE;}
.16 {color: BLUE; background-color: BLUE; layer-background-color: BLUE; border: 1px none BLUE; visibility: VISIBLE;}
.tk {color: #GREEN; background-color: BLACK; layer-background-color: BLACK; border: 1px none BLACK; visibility: VISIBLE;}
</style>

Så har jeg denne funktion hentet somewhere:
function showHide() {
        if(document.all) {
            toggle.style.visibility = (toggle.style.visibility=='visible'?'hidden':'visible');
        }
        else if(document.layers) {
            document.toggle.visibility = (document.toggle.visibility=='visible'?'hidden':'visible');
        }
        else if(isGecko()) {
            var myDivs = document.getElementsByTagName("div");
            myDivs['toggle'].style.visibility = (myDivs['toggle'].style.visibility=='visible'?'hidden':'visible');
        }
    }

Problemet er bare at den ikke virker, det er en række <div>s som hver især får en af disse styles afhængigt af deres funktion. Nu har jeg lavet en knap som så skulle kunne toggle om stylen toggle er vist/skjult.
<input name="tbn1" type="button" onClick="java script:showhide();"  value="Vis alle">

Det virker så ikke !! :-|

Det jeg gerne vil have er at funktionen kan kaldes med et parameter på hvilken style der skal toggles.

Er der en venlig sjæl som vil hjælpe.

På forhånd tak

E1
Avatar billede eksperten1 Nybegynder
29. september 2002 - 00:53 #1
PS. Det er kun i IE det skal spille. (både mac og win)
Avatar billede Slettet bruger
29. september 2002 - 11:00 #2
Du kan ikke helt bruge den funktion. Hvis du vil skifte alle div's, der har classname "toggle", så skal du løbe igennem en løkke, fx:

function showHide() {
divs = document.getElementsByTagName("div");
for (i = 0; i < divs.length; i++)
if (divs[i].className == "toggle")
divs[i].style.visibility = (divs[i].style.visibility == "visible") ? "hidden" : "visible";
}
Avatar billede Slettet bruger
29. september 2002 - 11:00 #3
P.S. Det skulle gerne virke i IE5+.
Avatar billede eksperten1 Nybegynder
29. september 2002 - 11:06 #4
Njae, det som jeg har gjort er at definere en style for de div's som der er grupperet (!). Dvs. at alle layers af typen 9 har en class='9' og sådan er der defineret 4 styles. (i eksemplet har jeg kaldt den .toggle)
Nu vil jeg kunne trykke på en knap og så få den til at skifte visible|hidden på en bestemt style. ?!
Jeg kan ikke gå efter deres id/name idet alle div's har et unikt navn.

vhE1
Avatar billede Slettet bruger
29. september 2002 - 11:09 #5
Det gør mit script heller ikke.
Det går alle div's igennem og ser efter, om deres klassenavn er "toggle". Hvis det er tilfældet, skifter den lagets synlighed.

Du kan vist ikke sådan umiddelbart ændre i selve stylesheetet med JavaScript. Men du kan ændre på hvert lags egenskaber, hvilket jeg så gør!
Avatar billede eksperten1 Nybegynder
29. september 2002 - 11:20 #6
Jeg får en fejl, måske skulle jeg have sagt at det her ligger inde i en iframe ? "et objekt var ventet"!
Avatar billede Slettet bruger
29. september 2002 - 11:22 #7
Ja, det kommer lidt an på, om du har scriptet i iframen eller i på siden, der indeholder iframen.
Det allerbedste ville være at smide et link!
Avatar billede eksperten1 Nybegynder
29. september 2002 - 11:24 #8
Problemet er at det ikke ligger tilgængeligt eksternt kun på min egen pcer.

Scriptet ligger i iframen, men skal styres ude fra iframen.
vhE1
Avatar billede Slettet bruger
29. september 2002 - 11:26 #9
OK, så bliver det således:

function showHide() {
divs = document.iframeNavn.document.getElementsByTagName("div");
for (i = 0; i < divs.length; i++)
if (divs[i].className == "toggle")
divs[i].style.visibility = (divs[i].style.visibility == "visible") ? "hidden" : "visible";
}

Men kan du ikke bare lægge siden ud på friserverplads?
Avatar billede eksperten1 Nybegynder
29. september 2002 - 11:35 #10
http://bjaergager.dk/ekspert/

Den fejler stadigvæk ?
Avatar billede Slettet bruger
29. september 2002 - 11:39 #11
Først og fremmest JavaScript er case-sensitivt. showhide er ikke det samme som showHide.

Derfor skal du ændre vis/skjul-linket til dette:

<a href="#" onClick="document.layout.showHide(); return false;">Vis/Skjul 1/9</a>

... og scriptet skal være det samme som i mit indlæg 29/09-2002 11:00:11
Avatar billede eksperten1 Nybegynder
29. september 2002 - 11:43 #12
OK, du ER en stjerne. ;-)
Sig mig lige, første gang jeg klikkerpå linket så sker der intet, men anden gang fjernes de så.?

vhE1
Avatar billede eksperten1 Nybegynder
29. september 2002 - 11:58 #13
Da jeg nu gerne vil kalde funktionen sådan at jeg kan sende en var med hvilken style der skal skjules/vises, har jeg ændret iden. (og så virker den jo ikke!!)

<a href="java script:document.layout.showHide("9");">Vis/Skjul 1/9</a>
--
function showHide(strClass) {
divs = document.getElementsByTagName(strClass);
for (i = 0; i < divs.length; i++)
if (divs[i].className == strClass)
divs[i].style.visibility = (divs[i].style.visibility == "visible") ? "hidden" : "visible";
}
--
Hulk, hvorfor nu det?
Avatar billede eksperten1 Nybegynder
29. september 2002 - 12:09 #14
Upps :-| Nå jeg fuckede det da rimeligt meget up.
Nu fungerer den, jeg havde jo slettet at den skal lede efter div's.

Jeg takker og lukker. (og åbner nu et nyt spg.)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester