/ 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
Hvilket sted er jeg nu?
Fra : Kim Noer


Dato : 22-03-02 17:11

Davsen der..

Hvordan kan jeg i en funktion der bliver kaldt af en 'event' finde ud af
præcis hvor den er kaldt fra- ala :

function sjov() {
alert(f.eks div's 'innertext')
}

<div onclick="sjov()">meow<div>

Jeg tror jeg skal bruge this - men det gælder vidst kun objekter?




 
 
Stig Nygaard (22-03-2002)
Kommentar
Fra : Stig Nygaard


Dato : 22-03-02 20:29

Hej Kim


Kim Noer wrote:
> Hvordan kan jeg i en funktion der bliver kaldt af en 'event' finde ud af
> præcis hvor den er kaldt fra- ala :
>
> function sjov() {
> alert(f.eks div's 'innertext')
> }
>
> <div onclick="sjov()">meow<div>
>
> Jeg tror jeg skal bruge this - men det gælder vidst kun objekter?

Hvad tænker du på udover objekter ? Men, ja det kan gøres med this:

function sjov(elm) {
alert(elm.innerHTML);
}

<DIV onclick="sjov(this)">meow</DIV>

Skulle virke med stort set alle browsere der kan Javascript.


Mvh. Stig
stig@rockland.dk
* Bedre (D)HTML ? --> http://www.rockland.dk/stig/upghtml.html *


Stig Nygaard (22-03-2002)
Kommentar
Fra : Stig Nygaard


Dato : 22-03-02 20:44

> function sjov(elm) {
> alert(elm.innerHTML);
> }
>
> <DIV onclick="sjov(this)">meow</DIV>
>
> Skulle virke med stort set alle browsere der kan Javascript.

Altså det der med "this" skulle virke med stort set alle browsere. Jeg
valgte innerHTML fremfor innerText fordi innerHTML er understøttet af
flere browsere end innerText, men ingen af de to er standard. Hvis du
ikke ønsker at risikere at få HTML-kode med, så kan du bruge en funktion
som nedenstående til at trække "innertext" ud af et element. Funktionen
er baseret på ren standardiseret W3C DOM kode:

function getConcatenedTextContent(node) {
   var _result = "";
   if (node == null) {
      return _result;
   }
   var childrens = node.childNodes;
   var i = 0;
   while (i < childrens.length) {
      var child = childrens.item(i);
      switch (child.nodeType) {
         case 1: // ELEMENT_NODE
         case 5: // ENTITY_REFERENCE_NODE
            _result += getConcatenedTextContent(child);
            break;
         case 3: // TEXT_NODE
         case 2: // ATTRIBUTE_NODE
         case 4: // CDATA_SECTION_NODE
            _result += child.nodeValue;
            break;
         case 6: // ENTITY_NODE
         case 7: // PROCESSING_INSTRUCTION_NODE
         case 8: // COMMENT_NODE
         case 9: // DOCUMENT_NODE
         case 10: // DOCUMENT_TYPE_NODE
         case 11: // DOCUMENT_FRAGMENT_NODE
         case 12: // NOTATION_NODE
          // skip
          break;
      }
      i ++;
   }
   return _result;
}

Ja, lidt voldsomt. Men W3C DOM standarden indeholder ikke en simpel
funktion eller objekt-egenskab a'la MSIE's innerText.


Mvh. Stig
stig@rockland.dk
* Bedre (D)HTML ? --> http://www.rockland.dk/stig/upghtml.html *


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

Månedens bedste
Årets bedste
Sidste års bedste