Avatar billede bgo Nybegynder
30. april 2002 - 13:50 Der er 7 kommentarer og
1 løsning

Opera og JavaScript

I opera 6, understøttes da kun ting som onclick osv.?? Jeg har følgende kode:

<script language=JavaScript>
var basis=387;
if (is.ie && !is.ieopera) {
var ba=basis;
} else {
if (is.ns && !is.ieopera) {
var adding=-16;
var ba=parseInt(basis)+parseInt(adding);
} else {
var adding=16;
var ba=parseInt(basis)+parseInt(adding);
}
}
document.writeln("<div id='arrow1' style='position:absolute; left:114px; top:" + ba + "px; width:78px; height:21px; z-index:3; visibility: hidden'>");
</script>

Her skulle ba blive 387 i IE, og ba skulle blive 387-16 i NS og så skulle ba blive 387+16 i andre browsere og til sidst skulle den givne browser lave et layer ved hjælp af ba-værdien. MEN i Opera gider den slet ikke lave nogen layer. I IE og NS virker det fint (jeg har endda tidligere bedt specifikt efter Opera, uden held).

Jeg ville jo gerne have at tingene så pæne ud i alle tre browsere, men det bliver da lidt svært hvis Opera ikke understøtter JavaScript bare i denne udstrækning(jeg HAR tilvalgt JavaScript...).

Eller er det mig der er en klodset begynder??

bgo
Avatar billede jakoba Nybegynder
30. april 2002 - 14:09 #1
du kan godt lave og bruge layers i opera.
i opera6 siges det ikke er noget dokument.all array så der er du nødt til at bruge getElementById('arrow1') for at få fat i en reference til dit layer.

Det bør du under alle omstændigheder gøre i browsere der har funktionen getElementById

mvh JakobA
Avatar billede bgo Nybegynder
30. april 2002 - 14:19 #2
Jeg har fået lidt på fornemmelsen at det er document.write(ln) den ikke kan finde ud af. For jeg har ikke haft andre problemmer med layers i Opera...

Så jeg er gået lidt over i en anden - måske bedre - grøft og lader noget javascript ændre på layerens style EFTER den er lavet.. Og der er jeg løbet ind i det hvor getElementById er noget nyt for mig (og tilsyneladende nødvendigt...) Det er samme metode til NS, oder was?? :)

bgo
Avatar billede jakoba Nybegynder
30. april 2002 - 14:48 #3
Det er samme metode til NS6.

NS4 har sin helt egen, men den kræver vist at din <div kommando har en NAME='arrow1' attribut udover den ID='arrow1' du allerede har:
    document.layers['arrow1']

NB: ikke 100% her, prøv.
Avatar billede bgo Nybegynder
30. april 2002 - 15:01 #4
:)) Jeg prøver og prøver:)

I første omgang ns6 (én browser ad gangen, det tror jeg vist er en fordel:))

Det som i ie hedder document.all('arrow1').style.top=ba;
er det i ns6 document.getelementbyid['arrow1'].style.top=ba;

eller er jeg bare en smule tæt på? :)) Jeg har prøvet med buede og kantede, med eller uden style, ' og " men det vil ikke rigtigt. Før den har jeg
var adding=-16;
var ba=parseInt(basis)+parseInt(adding);
hvor hvor basis bare er en konstant.

bgo
Avatar billede jakoba Nybegynder
30. april 2002 - 15:14 #5
næsten korrekt. men der er to ting der skal rettes:
1)    JavaScript ser forskel på store og små bogstaver så  getElementById  skal staves præcis sådan, med stort E, B og I.
2)    getElementById er en funktion så der skal stå buede parenteser bagefter ( ). de kantede klammer er til at slå op i arrays.

document.getElementById('arrow1').style.top=ba;

så skulle den du.

mvh JakobA
Avatar billede bgo Nybegynder
30. april 2002 - 15:18 #6
YEESSS :)))

Tja, man får dårlige vaner af at have kodet kun til ie i længere tid:)) Den er jo stort set ligeglad:))

Mange tak for din hjælp:) Jeg kunne vel ikke få dig til at kreere et svar så jeg kan give dig dine point??? :)))

bgo
Avatar billede bgo Nybegynder
30. april 2002 - 15:19 #7
nu du har været så venlig og tålmodig at hjælpe ud over emnet fra start:))

bgo
Avatar billede jakoba Nybegynder
30. april 2002 - 15:23 #8
joda.
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