Autor Zpráva
blaaablaaa
Profil
ahoj,
snazim se ucit v js, takze si pisu "galerii" fotek - http://gal.trupek.cz - jako zaklad jsem pouzil drag&drop skript, tker yjsme nekde vygooglil.
ve funkci start pak pres innerHTML "do" dotky vlozim odkaz na zavreni, reseny pres onclick, ten vska bohuzel nefunguje, pokud jej vsak napisu primo do stranky (umisteny vpravo nahore - zavira prvni obrazek), vse funguje...
nevite, jak to vyresit?
(js jsem pro vetsi prehlednost umistil primo do kodu)
Diky
Chamurappi
Profil
Reaguji na blaaablaaa:
Po zběžném průzkumu bych řekl, že křížek nezavírá kvůli tomu, že jeho rodič <div> stornuje výchozí akci při onmousedown (tedy při započetí kliknutí).

Mimochodem, nepoužívej getAttribute a setAttribute na atributy, které jsou dostupné ve standardním HTML DOMu (class, id atd.).
blaaablaaa
Profil
Chamurappi
praveze tim to neni - pokud krizek vlozim primo do kodu (ne pres innerhtml), vse funguje, jak ma.

ok, proc by se nemeli pouzivat?
Měsíček
Profil
"ok, proc by se nemeli pouzivat?"

Možná proto, protože celkově bude aplikace o několik tísic sekundy pomalejší, možná taky proto, že je to zbytečně dlouhé a zároveň zbytečné.
Chamurappi
Profil
Reaguji na blaaablaaa:
praveze tim to neni
Vskutku. Je to tím, že křížek při onmousedown zničíš, protože nastavuješ nové innerHTML v onmousedown <div>u. Fotka se nestihne zavřít dříve, než se zase otevře.

proc by se nemeli pouzivat?
Hlavně proto, že v mnoha případech nefungují (třeba class v Exploreru nebo value v Mozille) a nebo fungují jinak, než by programátor chtěl. Jakmile HTML parser přelouská kód, nemá smysl sahat na atributy, jejichž obsah už byl promítnut do vlastností elementů. Sáhnout si pro „něco.className“ je čistší než lovit obsah atributu „class“.
blaaablaaa
Profil
Chamurappi
diky za rady

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:

Prosím používejte diakritiku a interpunkci.

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

0