02. oktober 2000 - 13:01Der er
27 kommentarer og 1 løsning
Aktivering af applet via et JavaScript inkl. CSS
Jeg har lavet et javascript, der styrer en applet-drop-down-menu, men har lidt problemer med at gøre den synlig/usynlig via klik med musen:
I min .js-fil indkapsler jeg de genererende linier med <DIV CLASS=\'synlig_usynlig\'>...</DIV>. I .css-filen har jeg tilsvarende oprettet:
# synlig_usynlig { visibility: hidden; etc. etc. }
Appletten loader helt fint, hvis den får lov at starte sin \"tilværelse\" som synlig. Dernæst kan jeg gøre den usynlig/synlig/usynlig (som jeg lyster) ved at kalde en funktion, der sætter visibility til henholdsvis \"hidden\" og \"visible\".
Men (nu kommer det...) hvis jeg lader den være usynlig (dvs. \"visibility: hidden\") fra STARTEN af, kan jeg mærkeligt nok ikke efterfølgende ændre dens synlighed, som ovenfor nævnt?
Min egen mistanke går på, om appletten (evt. appletter generelt) kræver at være \"visible\" fra staren af. Håber det er mig, der gør noget galt, for ellers ryger min fikse idé med min dropdown-menu...
Er der en eller anden flink/dygtig sjæl, som gider kommentere dette?
Prøv evt. at skrive noget i dit lag efter din applet, så du kan se om laget overhovedet bliver synligt...
En anden mulighed er at vise laget, og derefter skrive applettet ind i laget bagefter... Prøv lige at skrive noget tekst under den først, så prøver vi det andet bagefter...
Jeg er bare med på en lytter, men det er så kedeligt bare at skrive det hver gang !! Og så kunne jeg jo lige så godt benytte mig af den lille sprog-finurlighed. Undskyld, hvis det brød din koncentration !
er en funktion som skifter indholdet i et lag som hedder \"lagnavn\"... Ret navnet til det du selv benytter...
Du kalder funktionen således
writeItToLayer(\"dette kommer til at stå i laget nu\");
eller
var tekst = \"<applet mm. hvad der nu skal stå>\"; writeItToLayer(tekst);
så laver du bare en variebel indeholdende koden til din javaapplet-dims, og kalder funktionen på en af de to ovenstående måder, lige efter at du har sat \"visible\" på dit lag....
Jeg kan ikke rigtigt styre tingene. Det er sikkert rigtigt, hvad du foreslår. Hvis jeg kunne maile dig min .js-fil, .css-fil samt mit html-dok, så ville jeg have nemmere ved at præcisere, hvor mit overblik står af - ok!
Spg. 1: ======= Vil jeg med dit forslag ikke støde ind i problemet med, at objektet (#synlig_usynlig) først skal være defineret med en <DIV ID=\"synlig_usynlig>....applet-menu-halløj..</DIV>, før du kan referere til det og fx ændres dets visibility?
Spg. 2: ======= Inden jeg \"kæmper\" videre, vil jeg høre dig, om nedenstående ikke giver det samme, som dit forslag:
Har endnu ikke prøvet det, men vil ikke mene det fungerer, da laget ikke er lukket (og velsagtens derfor heller ikke defineret) med </DIV>, inden jeg ændrer dets egenskaber...?
Spg. 3: ======= Er det korrekt, at man kun bør benytte <DIV ID=\"lagnavn\">..</DIV> én gang, da ID er skabt til \"engangs-forestillinger\", hvorimod CLASS kan genbruges i det uendelige?
NB! Mine spørgsmål afslører sikkert, at jeg stadig er lidt i tvivl om en række grundlæggende begreber og deres anvendelse, men det ville fremme processen, såfremt du kunne hjælpe mig på rette spor - ok!
så er det skjult indtil at vi vælger at vise det med vores script.
2: Her går det så lidt galt... Dit div-tag ligger, som jeg forstår det, i din javascriptkode, og det skal den ikke... Den skal ligge i dit html-dokument, og det bedste er altid at lægge dem som det sidste på siden lige inden dit </body>-tag...
Du kan som du selv siger, ikke ændre noget på et lag som du ikke hat afsluttet, da det endnu ikke burde være defineret...
3: Jo, id er et unikt navn som du skal give dine div-tags, da id skal være unikt ligesom dit personnummer... Derfor altid forskellige id-tags... Class derimod er jo et stylesheet som du definerer, og menngen er som du selv siger, at genbruge det en masse steder, og du kan derfor godt sætte class=\"something\" på flere divs...
Du kunne sagtens maile mig koden, hvis ikke det var imod mit princip at lave hele kodestykker... Jeg vil meget hellere hjælpe på denne måde, sådan at jeg ved at du lærer noget af det...
Ok, men når jeg nu for alvor er kommet på \"skolebænken\", så må jeg lige være helt 100% sikker på opbygningen af nedenstående:
if(document.layers){ document.lagnavn.document.write(what); document.lagnavn.document.close(); } Er kun sand, hvis vi taler Netscape - ikke sandt?
else{ document.all.lagnavn.innerHTML = what; } Antager du, at der benytes Ie - ikke sandt? SKAL man skrive .all.? Duer document.lagnavn.innerHTML ikke?
Jo, det øverste med write() er til netscape, og det andet er til ie... Du kan se at der er en detection... document.layers er netscape og document.all er ie...
Jeg ved faktisk ikke helt om du kan udelade all alene... jeg tror måske at du kan nøjes med at skrive lagnavn.innerHTML = what; men jeg vil ikke anbefale det, da det andet er mere korrekt kode...
Da min Vis-funktion efterfølgende vil blive fulgt op ad en Skjul-funktion og vise versa (afhænger jo af brugerens beslutsomhed...), har jeg et lille tillægsspørgsmål (meget brugt i \"Trafikradio\"...):
Skal laget ikke tømmes (fx i Skjul-funktionen) inden der kan skrives i det på ny (via Vis-funktionen) eller det er måske lige meget?
Jo vores forslag er ens, grunden til at mine navne er anderledes er, at det rent faktisk er en function som jeg bruger ofte, og derfor kopierede jeg den bare fra noget kode... :-)
Og jo, det er god skik at have ; til sidst... Det er den korrekte syntax, og jeg har oplevet problemer med netscape hvis ikke de er der;
Jeg kunne desværre ikke få det til at fungere med \"to-parameter-kaldet\"!
Har prøvet lidt forskelligt mht. \'\', \"\" og uden \"omklamring\" - ingen forskel, får stadig den samme fejlmeddelelse om, at \"document.all.where - is not an object\"!
Ikke for at være pivet, men jeg \"giver op nu\", da jeg nok fremover vil kunne klare mig med \"et-parameter-kald-udgaven\" - tidsforbruget taget i betragtning...
NB! Det ville bare have været lidt \"lækkert\" med den mere proffe. og generelle udgave - ikke sandt.
Skulle du evt. på et tidspunkt få \"skidtet\" til at virke, hører jeg gerne fra dig.
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.