Autor Zpráva
Hanour
Profil
Programuji web v PHP (XHTML+CSS), uživatelé si po přihlášení sami mohou nastavit barevný vzhled (skin) stránek (pozadí, text, rámečky tabulek, odkazy…). Samozřejmě dokážu naprogramovat ve dvou krocích v PHP - 1. ve formuláři nastaví barvy jednotlivým položkám a uloží. 2. zobrazí se výsledná stránka, buď je se vzhledem spokojen nebo se vrací zpět na formulář a mění barevný vzhled.

Rád bych ale toto sloučil do jednoho kroku, aby hned při nastavování barev ve formuláři (má pro každou položku pomocí roletkového menu SELECT-OPTION k dispozici 216 tzv. bezpečných barev) tak, aby hned po jejím nastavení ve formuláři na téže stránce byla malá ukázka/náhled (ať už přímo v kódu samotné stránky s formulářem či na jiné stránce vložené vnořeným rámem IFRAME), takže jakmile změní barvu pro text (tedy jen překlikne na jinou barvu v roletkovém menu), text v náhledu se změní, pro pozadí a další prvky taktéž. Až je spokojen s nastavením, které takto on-line vidí v náhledu, uloží jej. Je tohohle schopen JavaScript? Nevíte někdo o nějakém hotovém scriptu ke stažení - zřejmě to nebude úplně triviální záležitost.

Jsem stran JS absolutní začátečník, scripty výhradně přebírám. Díky za případný tip.
Radek Cvek
Profil
<script language="JavaScript" type="text/javascript">
function zmenaStylu(co, zmena)
  {
  switch (co) 
    {
    case 'color':
      document.getElementById('uzivatel').style.color=zmena;
      break;
    case 'backgroundColor':
      document.getElementById('uzivatel').style.backgroundColor=zmena;
      break;
    }    
  }
</script> 

<div id="uzivatel">
  <h1>Nadpis</h1>
  <p>Quisque volutpat est quis neque luctus sit amet sollicitudin risus molestie. Nullam vel velit vel mi pharetra adipiscing. Nullam commodo egestas nunc, vitae condimentum erat lobortis sed. Cras imperdiet ipsum et augue fringilla id dictum tortor mollis. Sed luctus eleifend nibh, sit amet imperdiet mauris convallis vel. Ut id dui sapien. Aenean in nunc non nibh aliquet faucibus. Duis faucibus massa in justo suscipit cursus. Fusce in ipsum sed tortor aliquam iaculis eu vitae dui. Aliquam iaculis feugiat euismod. </p>
</div>

<form name="formular">
  <select onChange="zmenaStylu('color', this.value);">
    <option value="red">cervene pismo</option>
    <option value="blue">modre pismo</option>
  </select>
  <select onChange="zmenaStylu('backgroundColor', this.value);">
    <option value="yellow">zlute pozadi</option>
    <option value="white">bile pozadi</option>
  </select>
</form>
Chamurappi
Profil
Reaguji na Hanoura:
scripty výhradně přebírám
Zadání je tak specifické, že nejspíš žádné hotové řešení nenajdeš a budeš se muset těch pár základů naučit. Každou dílčí věc, kterou měníš v PHP, budeš muset měnit i v JS.

Připadá mi, že nabízíš zbytečně rozmanité nastavování. To si má každý uživatel nastavovat jen pro své oko, nebo je tím uživatelem správce webu, který si ho uzpůsobuje pro ostatní? Kdybys dal na výběr dvacet různých barevných sestav, měl bys to jednodušší — v PHP bys jen připsal class k <html>, v JS bys přepnul document.documentElement.className a bylo by hotovo, o zbytek by se postaral stylopis.


Reaguji na Radka Cveka:
Ten switch tam asi nebude potřeba, hm?
document.getElementById('uzivatel').style[co] = zmena;
Radek Cvek
Profil
Chamurappi:
Pěkně, teď je celá funkce na jeden řádek - mě se tam ta proměná nedařila dostat a teď vidím, jak je to jednoduché.
peta
Profil
Nebylo by jednodussi zmenit className?

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: