Avatar billede vbmojo Nybegynder
21. august 2000 - 10:02 Der er 12 kommentarer og
2 løsninger

layers - swap tekst

jeg har et layer som er skjult. Ved klik på et billede vises dette layer.
Layeret indeholder noget tekst som jeg frygtelig gerne vil kunne skifte under forskellige forhold - selv om det er det samme layer der bliver åbnet.
Kan man på en eller anden måde \"swappe\" tekst - ligesom man kan \"swappe\" et image?
Har prøvet alt muligt - inclusiv at læse indholdet af document objektet - det kan man heller ikke. - HJÆLP ;-)
Avatar billede geeeet Nybegynder
21. august 2000 - 10:05 #1
Du skal skrive noget nyt indhold ud til laget for at kunne skifte teksten...

Finder lige en funktion jeg har liggende til dig...

Vent 10 sek..
Avatar billede geeeet Nybegynder
21. august 2000 - 10:07 #2
function writeItToLayer(what){
        if(document.layers){
            document.lagnavn.document.write(what);
            document.lagnavn.document.close();
        }
        else{
            document.all.lagnavn.innerHTML = what;
        }
    }


Så kalder du bare funtionen med en tekststreng som f.eks.:

var tekst2 = \"dkfjdsklfj dslkfjdslkfj dskjfdf\";
writeItToLayer(tekst2);


/Geeeet

Avatar billede vbmojo Nybegynder
21. august 2000 - 10:10 #3
Hmmm - vil det overskrive layerets originale indhold - eller tilføje til det eksisterende indhold?

/vbMoJo
Avatar billede jumper Nybegynder
21. august 2000 - 10:10 #4
<html>
<head>
<script language=\"Javascript\">

function skriv(hvad){
  if (document.all){ // IE
    ditLag.innerHTML = hvad;
  }
  if (document.layers){ // Netscape
    with (document.ditLag.document){
      open()
      write(hvad)
      close()
    }
  }
}

</script>
<style>
#ditLag{position:absolute;left:100px;top:100px}
</style>
</head>
<body>

<div id=ditLag>
Hejsa
</div>

<a href=\"java script:skriv(\'Hejsa\');return false\">Hejsa</a>

<a href=\"java script:skriv(\'<b>Fed tekst</b>\');return false\">Fed tekst</a>

</body>
</html>

Det burde give dig en god ide om hvordan i både IE og Netscape.

/Thor
Avatar billede erikjacobsen Ekspert
21. august 2000 - 10:10 #5
Alternativt laver du et lag til hvert tekst, og gør dem synlige/usynlige efter behov.
Hvad synes du er nemmest?
Avatar billede jumper Nybegynder
21. august 2000 - 10:11 #6
I Netscape skal et element være absolute positioneret, før du kan skrive til det. I IE kan du gøre det ved alle elementer på siden, positionerede eller ej.

/Thor
Avatar billede geeeet Nybegynder
21. august 2000 - 10:12 #7
Den slettet indholdet af laget, det er den eneste måde det kan gøres på, dog kan du også have to lag, hvor det ene bliver skjult når det andet bliver vist...

Jeg ville vælge min løsning hvis der er mange muligheder, og lave et lag til hver hvis der kun er få...

/Geeeet
Avatar billede jumper Nybegynder
21. august 2000 - 10:13 #8
At slette indholdet er ikke den eneste løsning, forudsat at du bruger IE.

ditLag.innerHTML += \"Noget ekstra tekst\"

/Thor
Avatar billede jumper Nybegynder
21. august 2000 - 10:15 #9
Hvis du har brug for at skrive til flere lag, kan funktionen selvf. blot tilrettes.

function skriv(lag,hvad){
  if (document.all){ // IE
    window[lag].innerHTML = hvad;
  }
  if (document.layers){ // Netscape
    with (document[lag]document){
      open()
      write(hvad)
      close()
    }
  }
}

Dernæst kalder du så funktionen som

skriv(\"ditLag\",\"noget tekst\")

hvor ditLag er navnet på dit lag ;)

/Thor
Avatar billede geeeet Nybegynder
21. august 2000 - 10:15 #10
Det skal vel helst virke i alle browsere???
Og det er jo ikke noget problem at få det gamle indhold igen, hvis det også bare er lagt i en variabel...

/Geeeet
Avatar billede geeeet Nybegynder
21. august 2000 - 10:16 #11
function writeItToLayer(what,where){
        if(document.layers){
            where.document.write(what);
            where.document.close();
        }
        else{
            where.innerHTML = what;
        }
    }

Der var den i min version også... :-)

/Geeeet
Avatar billede vbmojo Nybegynder
21. august 2000 - 10:16 #12
1000 tak svende - lige hvad jeg havde brug for
Deler pointene lidt - håber det er ok

Og til Erik: Nej - ville få alt for meget kode hvis jeg bare lavede alle lagene - og så viste det pågældende. Det er hele grunden til spørgsmålet. Men det kunne du heller ikke vide.
God dag alle sammen!

<I>appelsiner ER gule - ikke blå</i>
Avatar billede jumper Nybegynder
21. august 2000 - 10:20 #13
geeeet, where skal selvfølgelig være en streng istedet for en objekt reference, ik\'? Ellers skal man på forhånd vide hvilken browser der bruges ;)

Som objekt reference:

writeItToLayer(\"noget tekst\",document.all? lagNavn : document.lagNavn)

Som tekst

writeItToLayer(\"noget tekst\",\"lagNavn\")

I funktionen er det så blot at bruge array notation til den dynamiske objekt reference.

/Thor
Avatar billede geeeet Nybegynder
21. august 2000 - 10:24 #14
var outerContainer = \"\"; //istarten af scriptet


lige før min </body>

<script language=\"JavaScript\">
<!--
if(document.layers){
    outerContainer = document.outerContainerLayer;
}
else{
    outerContainer = document.all.outerContainerLayer;
}
//-->
</script>

Så kører det, og jeg skal ikke skrive så lange navne...

/Geeeet
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