Autor Zpráva
xart
Profil *
Ahoj,

Mám kód:
<div start=1 startyear=2013 endyear=2015>
<a onclick="return funkce(this.parentNode.startmonth);"></a>
A v JS konzoly tuhle chybu:
reference to undefined property this.parentNode.startmonth

Proč to nefunguje, nebo jak to mám opravit? Ten div má asi 10 atributu, stejně jako funkce má více parametrů- tohle je jen pro ukázku.


<div start=1 startyear=2013 endyear=2015 startmonth=2 ...>
_es
Profil
xart:
this.parentNode.getAttribute("startmonth")
Prečo vlastne ukladáš hodnoty do atribútov elementov a nie „normálne“ do JS premenných?
xart
Profil *
_es:
this.parentNode.getAttribute("startmonth") -- Toto nebude fungovat všude, ne?

Prečo vlastne ukladáš hodnoty do atribútov elementov a nie ‚normálne‘ do JS premenných?
Jsou to hodnoty z PHP, které vypisuji do template... do externího JS PHP zapisovat nemůže.
_es
Profil
xart:
do externího JS PHP zapisovat nemůže.
Prečo by nemohlo?:
<script src="PHPsúbor.php"></script>

Toto nebude fungovat všude, ne?
V akom prehliadači ti to nefunguje?
Chamurappi
Profil
Reaguji na xarta:
Na čtení vlastních atributů budeš muset použít metodu getAttribute. Tedy this.parentNode.getAttribute("startmonth").

v JS konzoly tuhle chybu
Určitě je to chyba? Není to spíš jen varování? Čtení nedefinované vlastnosti by nemělo vyvolat chybu.

Edit: Nějak dlouho jsem čekal s odesláním, příspěvky #2 až #4 jsem neviděl :-)

Toto nebude fungovat všude, ne?
Bude.
xart
Profil *
_es:
Doporučuji užívat standardní vlastnosti HTML DOMu místo getAttribute/setAttribute - nezkoušel jsem to, ale mám na paměti, že by to někde mohlo nefungovat. Teď ale koukám, že tam Chamurappi vypisuje nějjaké konkrétní atributy pouze, znamená to, že pro práíci s vlastními atributy toto používat mohu?

Chamurappi:
Určitě je to chyba?
Varování, ano, máš pravdu.
Chamurappi
Profil
Reaguji na xarta:
Jenže startmonth není standardní vlastnost DOMu, ale něco, co sis sám vymyslel. Prohlížeč ti k tomu nezprostředkovává pohodlnější cestu.
xart
Profil *
Chamurappi:
Začínám se asi už necházet v tom, co píšete. Bral jsem jako standardní přístup k jakémukoliv atributu pomocí tečky (.id, .startmonth) než pomocí getattribute.

Nemám teď aktuálně možnost zkoušet, bude zaměřování pře getattribute fungovat v ie8+ (jinde problémy nečekám)
_es
Profil
xart:
bude zaměřování pře getattribute fungovat v ie8+ (jinde problémy nečekám)
Bude fungovať aj na oveľa starších prehliadačoch na atribútoch s vlastným názvom. Problematické je práve fungovanie pre štandardné atribúty. Aby sa aj len teoreticky vylúčila kolízia, môžeš dať názvom nejaký prefix, trebárs podľa HTML5 data-. Stále mi nie je jasné, prečo PHP generuje nejaké dáta do HTML atribútov a nie normálne, ako by sa patrilo, do JS kódu.
xart
Profil *
_es:
Je to pozůstatek staršího projektu, který není v mé moci (z finančích důvodů, nebylo by to zaplaceno) plně předělávat. Na tyhle atributy jsou navázané další akce, styly, atp.

Ale odnáším si zajímavý poznatek, že getattribute funguje správně, přestože jsem měl zažité, že ne.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: