Autor Zpráva
slovakCZ
Profil
Dobrý den,

mohu poprosit o kontrolu? Jaksi mi nefunguje přidání třídy. Moc temu neruzumim, jelikož nevidím chybu.
<html>
<head>
<script type="text/javascript" src="http://prototypejs.org/assets/2009/8/31/prototype.js"></script>
<script type="text/javascript">
		function addClass(){
   			node = $("element");
   			node.addClassName("title");
		}
	</script>
</head>
<body>
<input id="element" class="" onclick="addClass();">
</body>
</html>
Chamurappi
Profil
Reaguji na slovakaCZ:
Jaksi mi nefunguje přidání třídy.
Nevěřím.
slovakCZ
Profil
věř, chyba byla drobná... script musím vložit až pod input.. :o) takže takto:
<html>
<head>
<script type="text/javascript" src="http://prototypejs.org/assets/2009/8/31/prototype.js"></script>
</head>
<body>
<input id="element" class="" onclick="addClass();">
<script type="text/javascript">
        function addClass(){
               node = $("element");
               node.addClassName("title");
        }
    </script>
</body>
</html>


taková drobnost dokáže člověku zabrat hodinu.. bože, bože :D
Chamurappi
Profil
Reaguji na slovakaCZ:
script musím vložit až pod input.. :o)
Nemusíš.
slovakCZ
Profil
Ale musíš... zkus zkopírovat kód výše a vytvořít čistý html dokument jen s tímto kódem. (odkaz na prototype.js je veden na oficiální stránky, takže není potřeba nic stahovat).

Při vložení JS nad input nefunguje přidání třídy. Když ovšem vložím JS pod input tak již ano. Opravdu tomu tak je, zkoušel jsem ;)

//edit:
možná to je kvůli tomu, že neuvádím doctype atd atd.. jedná se o "stránku requestu ajaxu", tak proto.. se všemi náležitostmi, které ma xhtml obsahovat jsem to nezkoušel (abych se přiznal)
Chamurappi
Profil
Reaguji na slovakaCZ:
zkus zkopírovat kód výše a vytvořít čistý html dokument jen s tímto kódem
To jsem udělal už před třemi hodinami.
Edit k editu: Já také žádné náležitosti neuváděl, nemá smysl deklarovat XHTML, když ho prohlížeče berou jako HTML.
_es
Profil
slovakCZ:
Ináč ten tvoj kód sa dá s rovnakou funkčnosťou zredukovať na:
<input onclick="this.className='title'">
slovakCZ
Profil
Chamurappi:
omlouvám se, chyba na mé straně. Zkoušel jsem to pod nejnovějším Firefoxem s pluginem FireBug. Po kliknutí na input se třída ve firebugu nepřidala. Když jsem skript vložil pod input, tak již ano.. z toho jsem vyvodil, že to nefunguje.. je to tedy nějaký bug ve firebugu :)

_es:
ano, to je také řešení. Byl jsem tak zoufalý, že jsem hledal i na googlu jak se přidává třída pomocí prototype frameworku.. :o) toto řešení bylo kopírované z nějaké stránky a šlo mi jen o "funkčnost"... můj konkrétní případ vypadá naprosto, jinak ;)
Ale děkuji za připomínku.

Tom
Witiko
Profil
Jenom bych rád dodal v souvislosti s poměrně matoucím titulkem, že javascript nepoužívá třídy, ale prototypy. Jde o dva rozdílné způsoby objektového programování, přičemž každý z nich má své výhody, úskalí a zákonitosti co se týče logiky.

http://en.wikipedia.org/wiki/Prototype-based_programming#Comparison_with_class-based_models
Chamurappi
Profil
Reaguji na Witika:
Jen tak pro pořádek jsi sem přinesl nepořádek :-)
Není řeč o třídách v JS, ale o třídách v HTML.
Jinak máš samozřejmě pravdu.
Witiko
Profil
Chamurappi: Aj, tak to se omlouvám, neprostudoval jsem ten kód dost důkladně. Titulek "Přidání třídy v Prototype" a zařazení v javascript sekci mě naprosto zmátlo. :-D

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:

0