Autor Zpráva
sysel
Profil
Prosím o pomoc při objasnění rozdílu v následujících způsobech změn určitého atributu stylu javascriptem.
Obě funkce (klik i klak) nakonec udělají vlastně stejný barevný výsledek, ale DOM to zřejmě ovlivňuje jinak.

<style>
    h3 {color: red} 
    .jo {color: blue} 
    .ne {color: red}
</style>
<script>
  function klik(coo){ if (coo.className=="jo") {coo.className="ne";} else {coo.className="jo";};};   
  function klak(coo){ if (coo.style.color=="blue") {coo.style.color="red";} else {coo.style.color="blue";};}; 
</script>
. . .
<h3 onclick="klik(this)">titulek klik</h3>
<h3 onclick="klak(this)">titulek klak</h3>

Dále se mi nepodařilo pochopit, zda lze, v případě použití stylových tříd, měnit javascriptem definici takové třídy?
Bylo by to rychlejší než měnit className všude, kde je potřeba(?).
Monkeys
Profil *
sysel:
Rozdiel je v tom ze style vzdy prebije class

M.
Tomášeek
Profil
Monkeys:
Skoro vždy. Většinou.
Keeehi
Profil
sysel:
Bylo by to rychlejší než měnit className všude, kde je potřeba(?).
Většinou jde měnit třídu nějakému vhodnému rodiči. Příkladem by bylo vybraní všech buněk v určitém řádku tabulky. Místo toho aby jsi procházel buňku po buňce a každé měnil třídu, tak změníš třídu jejich rodiči a v css pak použiješ tr.trida td

A co se týče rychlosti tak JS je celkem výkonný. Pokud by jsi dělal tisíce změn mnohokrát za vteřinu pak by jsi to si poznal ale to zřejmě nebude tvůj případ.
sysel
Profil
Čili, musím mít třídy stylů vždy předem připraveny a pak nějak šikovně provést výběr těch objektů, kterých se to má týkat. Musím promyslet tu variantu s vyhledáním vhodného rodiče.

(Javascript je opravdu velmi rychlý, již jsem si to ověřil při vytváření dynamických stránek pomocí PHP. Ukázalo se mnohem rychlejší manipulovat se zobrazovanými daty lokálně, než si o jiné přerovnání stejných výsledků žádat server. )
Keeehi
Profil
sysel:
Čili, musím mít třídy stylů vždy předem připraveny a pak nějak šikovně provést výběr těch objektů, kterých se to má týkat.
Ano, je to většinou vhodný postup.
Mlocik97
Profil
sysel:
(Javascript je opravdu velmi rychlý, již jsem si to ověřil při vytváření dynamických stránek pomocí PHP. Ukázalo se mnohem rychlejší manipulovat se zobrazovanými daty lokálně, než si o jiné přerovnání stejných výsledků žádat server. )

ktorý retard (s prepáčením), by niečo také riešil na server-side?
Kajman
Profil
Mlocik97:

Když mám milion záznamů a potřebuji z nich jen 100 podle různého řazení, co si uživatel zvolí, tak mu přeci nebudu posílat milion záznamů, ať si je seřadí sám. Řazení na server-side mi přijde častější řešení. A když to je rychlé pro milion záznamů a stejně musím server-side naprogramovt, proč to nepoužít i pro deset záznamů?
sysel
Profil
Mlocik97:
ktorý retard (s prepáčením), by niečo také riešil na server-side?

. . . no přece já! každý nějak začíná :-)

Kajman:
. . . no já na server-side nakonec vyselektoval nějaké ty záznamy (obvykle tak do stovky ) a u klienta se z nich vytvořila tabulka, řazená defaultně podle prvního sloupce (to bylo IDčko). Přerovnání podle jiného sloupce se ukázalo rychlejší klientem. Pamatuji si, že to nebylo úplně triviální, ale zdařilo se. Nakonec i tu tabulku bylo rychlejší generovat javascriptem z dat poskytnutých serverem. Nechci tvrdit, že že server neumí sortovat rychleji, ale připočteme-li režii nutnou pro komunikaci a případné zatížení serveru, je nakonec lokální zpracování pohodlnější.
Kajman
Profil
sysel:
ale připočteme-li režii nutnou pro komunikaci a případné zatížení serveru, je nakonec lokální zpracování pohodlnější

Asi bych to nezobecňoval. Pochybuji, že by např. tato diskuse byla rychlejší, kdyby posílala klientovi seznam všech vláken, ať si to seřadí sám.
Kcko
Profil
sysel:
Až nastane situace kdy jeden sloupec tabulky budeš potřebovat seřadit podle nějakého speciálního formátu
- česká diakritika
- jiný jazyk (němčina)
- nějaká čísla, která budou muset být řazena podle toho jak to dává logiku např. v účetnictví
- měny atd

tak to velmi rád přenecháš serveru (a databázi pravděpodobně), než to implementovat do JS.

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