Thread View: pl.comp.lang.javascript
4 messages
4 total messages
Started by zpk
Sun, 13 Jun 2010 08:26
Niespójność JS?
Author: zpk
Date: Sun, 13 Jun 2010 08:26
Date: Sun, 13 Jun 2010 08:26
27 lines
1860 bytes
1860 bytes
Bawię się ostatnio własnościami elementów, np:
<element id="xx" class="cc" bla="gg" />
jeżeli zidentyfikuję go np tak:
var el=document.getElementById('xx');
Zauważyłem, że można napisać:
if (el.id=='xx') ...
Ale już nie można
if (el.class=='cc') ...
tylko trzeba:
if (el.className=='cc') ...
A zupełnie nie można
if (el.bla=='gg') ... //IE to rozumie
tylko trzeba aż:
if (el.attributes.getNamedItem("bla").value=='gg') ...
Z mojego punktu widzenia element ma atrybuty id, class i bla.
Dlaczego nie ma jednolitej interpretacji dotarcia do atrybutów?
A może jest tylko jeszcze do tego nie dotarłem ?
Pozdrawiam- Paweł Krzyżanowski
Re: Niespójność JS?
Author: Artur Muszyński
Date: Sun, 13 Jun 2010 10:23
Date: Sun, 13 Jun 2010 10:23
33 lines
2106 bytes
2106 bytes
W dniu 2010-06-13 10:26, zpk pisze:
> Bawię się ostatnio własnościami elementów, np:
>
> <element id="xx" class="cc" bla="gg" />
>
> jeżeli zidentyfikuję go np tak:
> var el=document.getElementById('xx');
>
> Zauważyłem, że można napisać:
> if (el.id=='xx') ...
>
> Ale już nie można
> if (el.class=='cc') ...
>
> tylko trzeba:
> if (el.className=='cc') ...
>
> A zupełnie nie można
> if (el.bla=='gg') ... //IE to rozumie
>
> tylko trzeba aż:
> if (el.attributes.getNamedItem("bla").value=='gg') ...
>
> Z mojego punktu widzenia element ma atrybuty id, class i bla.
> Dlaczego nie ma jednolitej interpretacji dotarcia do atrybutów?
> A może jest tylko jeszcze do tego nie dotarłem ?
Tylko że mapowanie atrybutów na property nie jest własnością języka,
tylko obiektów DOM (identycznie zachowa się skrypt w języku VBScript).
Class jest słowem zastrzeżonym, a bla to mechanizm IE o nazwie expando
(o ile dobrze pamiętam), nie występuje gdzie indziej.
artur
Re: Niespójność JS?
Author: porneL
Date: Sun, 13 Jun 2010 11:56
Date: Sun, 13 Jun 2010 11:56
38 lines
1960 bytes
1960 bytes
On Sun, 13 Jun 2010 09:26:31 +0100, zpk <zpksoft@op.pl> wrote:
> Bawię się ostatnio własnościami elementów, np:
>
> <element id="xx" class="cc" bla="gg" />
>
> jeżeli zidentyfikuję go np tak:
> var el=document.getElementById('xx');
>
> Zauważyłem, że można napisać:
> if (el.id=='xx') ...
>
> Ale już nie można
> if (el.class=='cc') ...
Bo class jest (niepotrzebnie) zarezerwowanym słowem kluczowym w JS. Z tego
samego powodu jest htmlFor i cssFloat.
> A zupełnie nie można
> if (el.bla=='gg') ... //IE to rozumie
Bo IE (przed v8 czy nawet v9) nie kuma różnicy między właściwościami
obiektów JS, a atrybutami DOM.
HTML DOM wymaga odzwierciedlania niektórych atrybutów DOM jako właściwości
obiektów JS, ale to nie jest po prostu odczytywanie atrybutów DOM. Np.:
a.href da ci pełny URL (http://example.com/etc), ale
a.getAttribute('href') da ci tylko to, co jest w źródle strony (czyli np.
"/etc").
> tylko trzeba aż:
> if (el.attributes.getNamedItem("bla").value=='gg') ...
Nie, nie trzeba. el.getAttribute('bla').
--
http://pornel.net
this.author = new Geek("porneL");
Re: Niespójność JS?
Author: zpk
Date: Sun, 13 Jun 2010 13:50
Date: Sun, 13 Jun 2010 13:50
12 lines
1600 bytes
1600 bytes
On 13 Cze, 13:56, porneL <niu...@pornel.net> wrote:
> On Sun, 13 Jun 2010 09:26:31 +0100, zpk <zpks...@op.pl> wrote:
>ciach
> > if (el.attributes.getNamedItem("bla").value=='gg') ...
>
> Nie, nie trzeba. el.getAttribute('bla').
>
No, trochę mi ulżyło. Dzięki.
Paweł
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads