/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
ændre tekst i div
Fra : Ryan


Dato : 05-04-03 20:49

Hej.
Jeg har en div hvori der er noget tekst.
Jeg ville gerne lave sådan, at jeg kunne skifte teksten ved onmouseover.
Hvordan skal jeg gøre det? - Er innerhtml ikke kun noget IE forstår.

--
Ryan



 
 
Lasse Reichstein Nie~ (05-04-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 05-04-03 23:26

"Ryan" <ryan@NOSPAM.dk> writes:

> Jeg har en div hvori der er noget tekst.
> Jeg ville gerne lave sådan, at jeg kunne skifte teksten ved onmouseover.
> Hvordan skal jeg gøre det? - Er innerhtml ikke kun noget IE forstår.

Der er også andre browsere der, i kompatibliltetens navn, har tilføjet
innerHTML. Det gør det stadig ikke til standard, og det er også en
meget sløv funktion at bruge, da den jo skal parse indholdet som HTML.
Hvis du bruger IE, så kan .innerText bruges, men generelt ville jeg bruge
DOM-funktioner til det.

Antag at din div kun indeholder tekst (ingen bold eller andre tags).

Lav funktionen:

function skiftText(div,txt) {
div.firstChild.nodeValue = txt;
}

Så kan du skifte teksten med
onmouseover="this.firstChild.data='foo bar tekst'"
eller
onmouseover="this.firstChild.nodeValue='foo bar tekst'"

Hvis der kun er tekst i div'en, så vil this.firstChild være en
text-knude i DOM-strukturen, og den kan opdateres ved at skrive til
dens nodeValue- eller data-egenskab (jeg ved ikke hvilken der er
bedst, hvis nogen ved det, så sig endelig til).
Hvis der er andet i div'en (fx kommentarer eller tags) så virker det
ikke, og der skal lidt mere arbejde til.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Ryan (06-04-2003)
Kommentar
Fra : Ryan


Dato : 06-04-03 03:39

> function skiftText(div,txt) {
> div.firstChild.nodeValue = txt;
> }
>
> Så kan du skifte teksten med
> onmouseover="this.firstChild.data='foo bar tekst'"
> eller
> onmouseover="this.firstChild.nodeValue='foo bar tekst'"

Dette virker fint, hvis det element jeg placerer onmouseover på, er det der
skal ændres, men min div skal bruges som en titel, som så skifter alt efter
hvilket menupunkt man har musen ved.
På denne måde virker det stadig fint i IE og Opera, men Netscape, kan ikke
finde ud af det.
Du kan se hvad jeg har gjort her: http://www.composmentis.dk/skifttitel.html

--
Ryan



Lasse Reichstein Nie~ (06-04-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 06-04-03 04:04

"Ryan" <ryan@NOSPAM.dk> writes:

> > function skiftText(div,txt) {
> > div.firstChild.nodeValue = txt;
> > }

Hmm, jeg glemte vist at bruge den funktion :)

> > Så kan du skifte teksten med
> > onmouseover="this.firstChild.data='foo bar tekst'"
> > eller
> > onmouseover="this.firstChild.nodeValue='foo bar tekst'"
>
> Dette virker fint, hvis det element jeg placerer onmouseover på, er det der
> skal ændres, men min div skal bruges som en titel, som så skifter alt efter
> hvilket menupunkt man har musen ved.
> På denne måde virker det stadig fint i IE og Opera, men Netscape, kan ikke
> finde ud af det.

Det er fordi du bare skriver "titel". Der er ingen standard der siger
at window.titel skal referere til et element med id="titel". Skift i
stedet funktionen ud med:


function skiftText(id,txt) {
var elem=document.getElementById(id);
elem.firstChild.nodeValue = txt;
}

Hvis du også bekymrer dig om ældre IE'er der ikke forstår getElementById,
så kan du evt skrive:

function getElement(id) {
if (document.getElementById) return document.getElementById(id);
if (document.all) return document.all[id];
}

function skiftText(id,txt) {
var elem=getElement(id);
elem.firstChild.nodeValue = txt;
}

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Ryan (06-04-2003)
Kommentar
Fra : Ryan


Dato : 06-04-03 04:51

> Hvis du også bekymrer dig om ældre IE'er der ikke forstår getElementById,
> så kan du evt skrive:
>
> function getElement(id) {
> if (document.getElementById) return document.getElementById(id);
> if (document.all) return document.all[id];
> }
>
> function skiftText(id,txt) {
> var elem=getElement(id);
> elem.firstChild.nodeValue = txt;
> }

Mange tak, så kører det. Og jo selvfølgelig bekymrer jeg mig om ældre IE'er,
i det omfang mine evner rækker - dvs. at det umiddelbart godt kan se ud som
om, jeg ikke bekymrer mig om dem


--
Regards,
Ryan



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste