Avatar billede dennism Nybegynder
21. oktober 2004 - 21:59 Der er 19 kommentarer og
1 løsning

JavaScript: alpha.opacity

Jeg har følgende tabel:

            <table cellspacing="0" cellpadding="0" style="width:100%; height: 15px; border-top: 1px #ffffff solid;" >
                <tr>
                    <td style="width:120px; height: 15px;" class=menu onMouseover="this.filters.alpha.opacity=100" onMouseout="this.filters.alpha.opacity=0">Forside</td><td style="width:660; height: 15px;">&nbsp;</td>
                </tr>
            </table>

Jeg får en fejl, når jeg bevæger musen hen over tabellen. Hvorfor virker min onMouseover ikke?
Det er meningen at tabellens "opacity" skal blive 100% når jeg bevæger musen hen på den.
Avatar billede dennism Nybegynder
21. oktober 2004 - 22:07 #1
Jeg fandt selv fejlen..havde glemt at oprette filteret ;)
Avatar billede roenving Novice
21. oktober 2004 - 22:10 #2
Fordi cellen ikke er født med en filters-property, den skal man sætte på !-)

F.eks. i en mere multi-browser version:

<table cellspacing="0" cellpadding="0" style="width:100%; height: 15px; border-top: 1px #ffffff solid;" >
  <tr>
    <td style="width:120px; height:15px;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;cursor:pointer;" class=menu onMouseover="this.filters.alpha.opacity=100;this.style.MozOpacity='1';this.style.opacity='1';" onMouseout="this.filters.alpha.opacity=0;this.style.MozOpacity='0';this.style.opacity='0';">Forside</td>
    <td style="width:660; height: 15px;">&nbsp;</td>
  </tr>
</table>
Avatar billede dennism Nybegynder
21. oktober 2004 - 22:16 #3
Hvad gør:

this.style.MozOpacity='0';
this.style.opacity='0';

?
Avatar billede roenving Novice
21. oktober 2004 - 22:19 #4
Det er de properties, som får det til at virke i andre browsere ...

Den første er nødvendig til Gecko-browsere (Mozilla, Netscape m.fl.), som er mere end nogle måneder gammel, mens den anden er css3-propertyen, som er implementeret i de nyeste Geckoer samt f.eks. Safari !-)
Avatar billede dennism Nybegynder
21. oktober 2004 - 22:22 #5
Bliver det så:

onMouseout="this.filters.alpha.opacity=60;this.style.MozOpacity='0.6';this.style.opacity='0.6';" ?
Avatar billede roenving Novice
21. oktober 2004 - 22:31 #6
Jepz !-)
Avatar billede dennism Nybegynder
21. oktober 2004 - 22:43 #7
Avatar billede olebole Juniormester
21. oktober 2004 - 22:45 #8
<ole>

mjaahhh ... i følge MS' egen dokumentation, er syntaksen (for IE):
  this.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 50;
eller:
  this.filters.item("Alpha").opacity = 50;

Det skyldes formodentligt, at 'filters' strengt taget ikke er et objekt, men en collection. Som bekendt er disse begreber dog lettere rodet sammen i JavaScript - hvilket sikkert er årsagen til din løsning virker, roenving  :)

/mvh
</bole>
Avatar billede roenving Novice
21. oktober 2004 - 22:48 #9
Ja, man kan meget med IE-gammeldags syntaks, spændende at se, hvornår M$ finder ud af, at en browser er beregnet til at browse, og ikke til at rette fejl ...

-- det vil i hvert fald betyde at en hulens masse kode skal skrive om, _måske_ også denne slags !-)

-- og tak for pointene '-)
Avatar billede olebole Juniormester
21. oktober 2004 - 23:11 #10
Det er nu faktisk ikke alene MS' skyld det hele  :)
Faktisk er JavaScript en frygtelig gang 'kaudervælsk', når det kommer til arrays, objekter og collections - primært fordi den underliggende datastruktur er den samme for de tre typer.
Det er noget irriterende rod, men det kan dog også være en fordel. Har man f.eks. tre elementer ('myDiv0','myDiv1' og 'myDiv2'), man vil skifte baggrundsfarve på, kan det gøres ved:

function skift(prop, val) {
  for (i=0; i<3; i++) {
      document.getElementById("myDiv"+i).style[prop] = val;
  }
}
skift( "backgroundColor", "#ff0000" );

Noget elendigt rod, da 'style' jo er et objekt - omend, det tider kan være ganske bekvemt, at JS ikke kan kende forskel  :)
Avatar billede olebole Juniormester
21. oktober 2004 - 23:13 #11
... og for at gøre det lidt mere sygt, kunne man også skrive:
  document.getElementById("myDiv"+i)["style"][prop] = val;  :oP
Avatar billede roenving Novice
21. oktober 2004 - 23:18 #12
-- og Jscript vil vel acceptere:

document.getElementById("myDiv"+i)("style")(prop) = val; ,-)
Avatar billede olebole Juniormester
21. oktober 2004 - 23:21 #13
Sikkert  ;o)
Denne her er nu heller ikke kedelig:
    window["location"]["reload"](true);

... eller:
    window["alert"](window["location"]["href"])

Tja, det er så bagsiden af et (ellers) dejligt sprog  :o|
Avatar billede olebole Juniormester
21. oktober 2004 - 23:22 #14
... og de to sidste er JavaScript ... ikke JScript  ;o)
Avatar billede roenving Novice
21. oktober 2004 - 23:26 #15
Tjah, dem kan vi jo køre langt ud, f.eks. onload="window['alert'](document['minForm']['minInput']['value'])"
Avatar billede olebole Juniormester
21. oktober 2004 - 23:32 #16
Ork, det er kun fatasien, der sætter grænser. Nu er det jo i disse år vældigt oppe i tiden med avancerede fatasier (det har jo i hvert fald været ganske udbredt i det ene regeringsparti de seneste år), så mulighederne er _rigtig_ mange  ;D
Avatar billede roenving Novice
21. oktober 2004 - 23:33 #17
-- og denne er også iorden i IE: onload="window['alert'](document['minForm']('minInput')['value'])"

-- men der er Mozilla stået af ...
Avatar billede olebole Juniormester
21. oktober 2004 - 23:35 #18
Yups, collections er meget en 'MS-ting'. Gecko ved godt, der er forskel på collections og arrays/objects ... men JS som sprog ved ikke, der forskel på arrays og objekter  :)
Avatar billede olebole Juniormester
21. oktober 2004 - 23:37 #19
PS: Når jeg i denne forbindelse skriver 'arrays', er 'associated arrays' underforstået  ;o)
Avatar billede olebole Juniormester
21. oktober 2004 - 23:41 #20
dennism >> Undskyld, vi spammer dit spm, men det er faktisk nogle spændende ting, vi her har fat i. Med lidt kreativitet, kan det faktisk bruges til en del  :)

Er det sort, hvad vi snakker om, har jeg for længe siden skrevet denne lille artikel, der måske kan bidrage med lidt 'transparents' omkring emnet  :)
  http://www.eksperten.dk/artikler/227
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