/ 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
Hvad går der galt i Mozilla/NS's XML impla~
Fra : Snuske


Dato : 06-12-02 15:13

Hejsa,

Nogen der kan se hvad der skal laves om, for at følgende kodestump også kan
afvikles på Mozilla1.2/NS7:

var objChildList = objParentNode.childNodes
for(node in objChildList){
if(node!="length"){
if(objChildList[node].nodeName=="DIV" &&
objChildList[node].style.display!="block"){
// Do Something
}
if(objChildList[node].hasChildNodes){
// Do Something
}
}
}

Jeg kan kun konstatere at "node" indeholder et "item", men hvordan jeg
kalder dette "item" via childNodes objektet, gad jeg godt vide!

På forhånd tak.


Mvh Snuske



 
 
Jonas Koch Bentzen (06-12-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 06-12-02 15:38

Snuske wrote:
>
> Nogen der kan se hvad der skal laves om, for at følgende kodestump også
> kan afvikles på Mozilla1.2/NS7:

Hvad siger JavaScript-konsollen (Tools -> Web Development -> JavaScript
Console)?

--
Jonas Koch Bentzen

Snuske (06-12-2002)
Kommentar
Fra : Snuske


Dato : 06-12-02 15:51

Ikke et pip.

"Jonas Koch Bentzen" <ingen.email@eksempel.dk> wrote in message
news:asqcom$4qe$1@sunsite.dk...
> Snuske wrote:
> >
> > Nogen der kan se hvad der skal laves om, for at følgende kodestump også
> > kan afvikles på Mozilla1.2/NS7:
>
> Hvad siger JavaScript-konsollen (Tools -> Web Development -> JavaScript
> Console)?
>
> --
> Jonas Koch Bentzen



Lasse Reichstein Nie~ (06-12-2002)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 06-12-02 16:19

"Snuske" <mupetcom@worldonline.dk> writes:

> Nogen der kan se hvad der skal laves om, for at følgende kodestump også kan
> afvikles på Mozilla1.2/NS7:
>
> var objChildList = objParentNode.childNodes
> for(node in objChildList){
> if(node!="length"){
> if(objChildList[node].nodeName=="DIV" &&
> objChildList[node].style.display!="block"){
> // Do Something
> }
> if(objChildList[node].hasChildNodes){
> // Do Something
> }
> }
> }
>
> Jeg kan kun konstatere at "node" indeholder et "item", men hvordan jeg
> kalder dette "item" via childNodes objektet, gad jeg godt vide!

Hvad går galt? Hvad forventede du skulle ske?

objParentNode.childNodes er et NodeList-objekt. Det er en slags array,
så det eneste man kan, er at få fat i noderne i arrayet.
Man kan enten skrive objChildList[0] eller objChildList.item(0) for
at få fat i det første element, og objChildList.length fortæller hvor mange
der er.

Hvis det kun er child-nodes du vil have fat i, så kan du enten bruge
for (i=0;i<objChildList.length;i++) { .... objChildList[i] .... }
eller
for (node=objParentNode.firstChild;node!=null;node=node.nextSibling)

Håber det hjælper
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
'Faith without judgement merely degrades the spirit divine.'

Snuske (06-12-2002)
Kommentar
Fra : Snuske


Dato : 06-12-02 21:34

Nuvel, men kan du forklarer mig hvorfor jeg ikke kan bruge min for...in? Den
virker i IE og det burde den også gøre i NS. Og det er også helt legalt at
bruge for...in til at crawl et almindeligt array. Suk :-/

Mvh Snuske

"Lasse Reichstein Nielsen" <lrn@hotpop.com> wrote in message
news:isy718hi.fsf@hotpop.com...
> "Snuske" <mupetcom@worldonline.dk> writes:
>
> > Nogen der kan se hvad der skal laves om, for at følgende kodestump også
kan
> > afvikles på Mozilla1.2/NS7:
> >
> > var objChildList = objParentNode.childNodes
> > for(node in objChildList){
> > if(node!="length"){
> > if(objChildList[node].nodeName=="DIV" &&
> > objChildList[node].style.display!="block"){
> > // Do Something
> > }
> > if(objChildList[node].hasChildNodes){
> > // Do Something
> > }
> > }
> > }
> >
> > Jeg kan kun konstatere at "node" indeholder et "item", men hvordan jeg
> > kalder dette "item" via childNodes objektet, gad jeg godt vide!
>
> Hvad går galt? Hvad forventede du skulle ske?
>
> objParentNode.childNodes er et NodeList-objekt. Det er en slags array,
> så det eneste man kan, er at få fat i noderne i arrayet.
> Man kan enten skrive objChildList[0] eller objChildList.item(0) for
> at få fat i det første element, og objChildList.length fortæller hvor
mange
> der er.
>
> Hvis det kun er child-nodes du vil have fat i, så kan du enten bruge
> for (i=0;i<objChildList.length;i++) { .... objChildList[i] .... }
> eller
> for (node=objParentNode.firstChild;node!=null;node=node.nextSibling)
>
> Håber det hjælper
> /L
> --
> Lasse Reichstein Nielsen - lrn@hotpop.com
> 'Faith without judgement merely degrades the spirit divine.'



Lasse Reichstein Nie~ (07-12-2002)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 07-12-02 01:26

"Snuske" <mupetcom@worldonline.dk> writes:

> Nuvel, men kan du forklarer mig hvorfor jeg ikke kan bruge min
> for...in?

Måske :)

> Den virker i IE og det burde den også gøre i NS.

Hvorfor det? Der er tre muligheder:
1) IE følger blot standarden, og NS har en fejl.
2) IE gør noget ud over standarden, og NS gør det ikke.
3) IE er i strid med standarden.

Ad 1: Ja, så bør NS selvfølgelig rette deres fejl.

Ad 2: Hvis IE gør noget ud over hvad der er krævet af DOM-standarden,
så er andre ikke forpligtigede til også at gøre det (og med Microsofts
historiske brug af "Embrace and extend"-strategien vil jeg næsten
anbefale *ikke* at efterligne deres unoder).

Ad 3: Så skal man selvfølgelig ikke følge trop.

> Og det er også helt legalt at bruge for...in til at crawl et
> almindeligt array. Suk :-/

Men en NodeList er ikke et Array. Nodelist er et Objekt der har to
egenskaber: et felt ("length") og en metode ("item"), og kald til
metoden, med heltallige argumenter, må også gerne skrives med samme
notation som array-opslag.

D.v.s., det eneste du garanteret kan gøre med et objekt, O, af type
NodeList er
O.length
O.item(0) ... O.item(O.length-1)
(eller ækvivialent: O[0] ... O[O.length-1] )

Man kan også altid tilgå egenskaber ved navn, fx O["length"] og
O["item"](2).

Et Array, A, med længde 4 har bl.a. egenskaberne 0, 1, 2 og 3, så man
kan skrive A[0] ... A[4].

For-in-konstruktionen gennemløber egenskaberne (undtagen dem der er
sat til DontEnum (og det er "length" vist for både NodeList og Array,
sammen med mange andre egenskaber ved Arrays)), så derfor er den
eneste egenskab du får ud af en Nodelist "item", mens du for et array
får 1, 2, 3 og 4.

IE har åbenbart valgt at tilføje tallene som egenskaber til NodeList,
men det er ikke et krav. Jeg ved ikke om det er en direkte fejl (men
det opfordrer jo i det mindste folk til at bruge featuren, og *det* er
en fejl).

(information on NodeList taget fra
<ULR:http://www.w3.org/TR/DOM-Level-2-Core/ecma-script-binding.html>
og for-in konstruktionen er beskrevet i afsnit 12.6.4 af
<URL:ftp://ftp.ecma.ch/ecma-st/Ecma-262.pdf>
)

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
'Faith without judgement merely degrades the spirit divine.'

Snuske (07-12-2002)
Kommentar
Fra : Snuske


Dato : 07-12-02 09:05

Hej Lasse,

Det var en meget fornem gennemgang. Mange tak for den

Glædelig jul forresten.


Mvh Snuske

"Lasse Reichstein Nielsen" <lrn@hotpop.com> wrote in message
news:znrik72i.fsf@hotpop.com...
> "Snuske" <mupetcom@worldonline.dk> writes:
>
> > Nuvel, men kan du forklarer mig hvorfor jeg ikke kan bruge min
> > for...in?
>
> Måske :)
>
> > Den virker i IE og det burde den også gøre i NS.
>
> Hvorfor det? Der er tre muligheder:
> 1) IE følger blot standarden, og NS har en fejl.
> 2) IE gør noget ud over standarden, og NS gør det ikke.
> 3) IE er i strid med standarden.
>
> Ad 1: Ja, så bør NS selvfølgelig rette deres fejl.
>
> Ad 2: Hvis IE gør noget ud over hvad der er krævet af DOM-standarden,
> så er andre ikke forpligtigede til også at gøre det (og med Microsofts
> historiske brug af "Embrace and extend"-strategien vil jeg næsten
> anbefale *ikke* at efterligne deres unoder).
>
> Ad 3: Så skal man selvfølgelig ikke følge trop.
>
> > Og det er også helt legalt at bruge for...in til at crawl et
> > almindeligt array. Suk :-/
>
> Men en NodeList er ikke et Array. Nodelist er et Objekt der har to
> egenskaber: et felt ("length") og en metode ("item"), og kald til
> metoden, med heltallige argumenter, må også gerne skrives med samme
> notation som array-opslag.
>
> D.v.s., det eneste du garanteret kan gøre med et objekt, O, af type
> NodeList er
> O.length
> O.item(0) ... O.item(O.length-1)
> (eller ækvivialent: O[0] ... O[O.length-1] )
>
> Man kan også altid tilgå egenskaber ved navn, fx O["length"] og
> O["item"](2).
>
> Et Array, A, med længde 4 har bl.a. egenskaberne 0, 1, 2 og 3, så man
> kan skrive A[0] ... A[4].
>
> For-in-konstruktionen gennemløber egenskaberne (undtagen dem der er
> sat til DontEnum (og det er "length" vist for både NodeList og Array,
> sammen med mange andre egenskaber ved Arrays)), så derfor er den
> eneste egenskab du får ud af en Nodelist "item", mens du for et array
> får 1, 2, 3 og 4.
>
> IE har åbenbart valgt at tilføje tallene som egenskaber til NodeList,
> men det er ikke et krav. Jeg ved ikke om det er en direkte fejl (men
> det opfordrer jo i det mindste folk til at bruge featuren, og *det* er
> en fejl).
>
> (information on NodeList taget fra
> <ULR:http://www.w3.org/TR/DOM-Level-2-Core/ecma-script-binding.html>
> og for-in konstruktionen er beskrevet i afsnit 12.6.4 af
> <URL:ftp://ftp.ecma.ch/ecma-st/Ecma-262.pdf>
> )
>
> /L
> --
> Lasse Reichstein Nielsen - lrn@hotpop.com
> 'Faith without judgement merely degrades the spirit divine.'



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste