Avatar billede tknudsen Nybegynder
29. november 2001 - 15:17 Der er 7 kommentarer og
1 løsning

prototype\'ing for html objekter

Kan man lave prototype\'ing for html objekter ala:

<TD>.prototype.access = new accessType();


function accessType()
{
  this.owner;
  this.accessCount=0;
}

for senere at tilgå <TD>\'ens nye access property via:

document.all.TDID.access.accessCount++;
Avatar billede jumper Nybegynder
29. november 2001 - 15:23 #1
I NS6.0 og NS6.2+ (NS6.1 havde fjernet det) kan du prototype HTMLElement:

HTMLElement.prototype.getTag = function(){
  return this.tagName;
}
alert( document.getElementById(\"etElement\").getTag() );

men hvis du blot skal sætte en property på dit element, kan du jo blot gøre dette

function AddCount(el){
  el.accessCount = el.accessCount?el.accessCount++:0;
}

var el = document.all.TDID;
AddCount(el);
alert(el.accessCount);

hvis du erstatter document.all med document.getElementById vil det ovenstående også virke i IE4+ samt NS6+/Mozilla.

/Thor
Avatar billede jumper Nybegynder
29. november 2001 - 15:23 #2
Hovsa, ret lige

el.accessCount = el.accessCount?el.accessCount++:0;

til

el.accessCount = el.accessCount?el.accessCount++:1;

/Thor
Avatar billede tknudsen Nybegynder
29. november 2001 - 15:33 #3
er HTMLElement et reserveret ord, eller skal jeg erstatte det med den ønskede html type - feks td ?
Avatar billede jumper Nybegynder
29. november 2001 - 15:36 #4
Hvis du vil bruge det, skal du bruge HTMLElement - men som sagt kan det være ret ligegyldigt da det kun er NS6.2+ der understøtter det. Istedet kan du blot sætte properties direkte på dine element referencer.

/Thor
Avatar billede tknudsen Nybegynder
29. november 2001 - 15:43 #5
ok - jeg skal lave det til ie5.0 +

så jeg laver en funktion der på onload tildeler alle TD\'er en access property:

function accessType()
{
    this.owner;
    this.accessCount=0;
}

function init()
{
    var i;
    var obj;

    for(i=0;i<document.all.length;i++)
    {
        obj = document.all[i];
        if(obj.tagName==\'TD\')
            obj.access = new accessType();
    }
}

... som jeg så kan tilgå senere...:

function getAccess()
{
    var i;
    var obj;

    for(i=0;i<document.all.length;i++)
    {
        obj = document.all[i];
        if(obj.tagName==\'TD\')
            alert(obj.access.accessCount);
    }

}
Avatar billede tknudsen Nybegynder
29. november 2001 - 15:45 #6
tak
:-)
Avatar billede jumper Nybegynder
29. november 2001 - 15:50 #7
Et lille tip: Istedet for at loope ALLE elementer på siden igennem, kan du blot nøjes med at loppe alle TD elementer igennem.

var TDS = document.all.tags(\"TD\");

Og hvis du planlægger at bruge DOM, hedder det

var TDS = document.getElementsByTagName(\"TD\");

/Thor
Avatar billede tknudsen Nybegynder
29. november 2001 - 15:51 #8
cool - mange tak
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