Avatar billede lako Nybegynder
30. juni 2004 - 12:43 Der er 7 kommentarer

hjælp til forståelse

Hej

Jeg har fundet nedenstående på nettet. Jeg har forsøgt at få det til at virke men der sker ikke rigtigt noget. Hvor er det galt ?

mvh
Lars Kohsel

<script language="JavaScript">

function Dictionary() {
this.table = new Object();
};
Dictionary.prototype.add = function add(key,value) { // key not a number
  this.table[key]=value; 
  this.table[this.table.length]=key;
};
Dictionary.prototype.get = function get(key) { // key not a number
  return this.table[key];
};
Dictionary.prototype.Iterator = function Iterator(table) {
  this.table = table;
  this.idx = 0;
};
Dictionary.prototype.Iterator.prototype.hasNext = function hasNext() {
  return this.idx < this.table.length;
};

Dictionary.prototype.Iterator.prototype.next = function next() {
  if (this.idx < this.table.length) {
    return this.table[this.idx++];
  } else { return null;
  }
};

Dictionary.prototype.iterator = function iterator() {
  return new this.Iterator(this.table);
};

var myDict = new Dictionary();
myDict.add("foo","this is a value");
myDict.add("test",true);

var iter = myDict.iterator();

while(iter.hasNext()) {
  var key = iter.next();
  alert("Dictionary says: "+key+" = "+myDict.get(key)+"/"+iter.idx);
}

</script>
Avatar billede knudx Nybegynder
30. juni 2004 - 17:24 #1
For mig kniber det også lidt med forståelsen... Hvor har du fundet det? Er det sådan noget microsoft-noget, eller er det noget der skal køre på en hjemmeside? Hvis det sidste er tilfældet, synes jeg du skal smide det ad H til.
Avatar billede knudx Nybegynder
30. juni 2004 - 17:25 #2
hov, jeg havde overset noget --- jeg ska lige glo en ekstra gang...
Avatar billede knudx Nybegynder
30. juni 2004 - 17:40 #3
Så vidt jeg kan se prøver scriptet noget som ikke kan lade sig gøre... new Object().length er a.f.a.i.k. 'undefined', og derfor duer Iterator-funktionen ikke. Men hvad skal du bruge det til? Det ligner noget fra en tutorial om objekter i javascript. Hvis det er det du er interesseret i, vil jeg godt anbefale www.crockford.com . Hvis ikke, synes jeg egentlig bare det er en djævelsk masse unødvendig kode.
Avatar billede roenving Novice
30. juni 2004 - 17:51 #4
Selvfølgelig, og man kan faktisk få en fornemmelse, hvis man ændrer den grundlæggende cinstructor:

function Dictionary() {
this.table = new Array();
};
Avatar billede lako Nybegynder
01. juli 2004 - 08:11 #5
Hej igen

Fandt noget andet der virker....

Det skal bruges til at holde øje med hvad der er krydset af i en server-side genereret treeview-komponent, som har en onClick event.

Nedenstående virker til formålet:

// dictionay object
// The one lookup method:
function mLookup(strKeyName) {
        return(this[strKeyName]);
}

// The meta Add method:
function mAdd() {
    for (c=0; c<mAdd.arguments.length; c+=2) {
        this[mAdd.arguments[c]] = mAdd.arguments[c+1];
    }
}

// The Delete method
function mDelete(strKeyName) {
    for (c=0; c<mDelete.arguments.length; c++) {
            this[mDelete.arguments[c]] = null;
    }
}

function mGetall() {
    var str = "";
    first = true
    for (anItem in this) {
        if (!first) str += ", "
        if (anItem.indexOf("KV_")!=-1 && this[anItem] != null) {
            str += this[anItem];
            first = false;
        }       
    }
    return str;
}


// A dictionary object of Cities and States/Countries:
function oDic() {
    this.Add = mAdd;
    this.Lookup = mLookup;
    this.Delete = mDelete;
    this.Getall = mGetall;
}

var d = new oDic();
Avatar billede knudx Nybegynder
01. juli 2004 - 12:23 #6
hvorfor kan man ikke skrive
Avatar billede knudx Nybegynder
01. juli 2004 - 12:31 #7
?!? det ka man også kan jeg se...
lige før ku jeg ej... Nåmenhvadvardetjegvillesige... nåhjoe:

nå, nevermind.
:^]
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