29. maj 2005 - 17:59
Der er
3 kommentarer og
1 løsning
Endnu et spørgsmål til det føromtalte JavaScript
I det JavaScript der er blivet beskrevet tidligere er der to ting som jeg ikke forstår:
function createOpts(sel){
var s = new Array();
var num = 0;
var n = sel.selectedIndex;
var args = createOpts.arguments.length;
for(var i=1;args>i;i++){
s[i-1] = document.getElementById(createOpts.arguments[i]);
if(s[i-1]==sel)num=i;
}
if(args>1){
if(s[num])sel = s[num];
else return;
}
...
...
...
...
}
Sidste linie i forløkken idenholder en if sætning, hvor der undersøges som array "s" indeholder "sel" på det udvalgte index. Men hvis funktionen bliver kaldt med fx tre argumenter hvordan kan et element i "s" så være ligmed "sel"?
I den sidste if sætning forstår jeg ikke hvordan "s[num]" kan evaluere til true eller false.
1. Nej den sammenligner elementet s[i-1], som hentes fra argument-listen, med sel, som er det første argument !-)
-- forklaringen er, at javascript accepterer ligeså mange argumenter til en funktion, som du lyster, også uden at de er angiver i funktionens signatur ...
Det er altså helt lovligt at kalde ovenstående funktion f.eks. med:
createOpts(document.getElementById('sel3'), document.getElementById('sel1'), document.getElementById('sel2'), document.getElementById('sel3'), document.getElementById('sel4'))
-- og bemærk, at argumenterne er html-elementer (objekter !-), som sagtens kan sammenlignes i javascript !-)
2. Og javascript er indrettet sådan, at alle 'ikke-værdi'er evalueres til false mens alle non-null-værdier evalueres til true i en if-sætning !-)
0, null, undefined og false evalueres altså alle til false !o]