Autor Zpráva
Jcas
Profil *
co znamená vazba
+promena+

Moderátor Chamurappi: Titulek „nerozumím syntaxi“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
Chamurappi
Profil
Reaguji na Jcase:
Plus jako binární operátor sčítá čísla, nebo spojuje řetězce.
Plus jako unární operátor vrací hodnotu čísla, nebo převádí na číslo.
Proměnná se píše se dvěma „n“.

Příště vlož ještě prťavější kousek kódu, ať si hezky zavěštíme. Už se těším, až někdo zredukuje celou otázku na jeden znak — zjevně k tomu spějeme.
Jcas
Profil *
Promiň
hraju si s opacity a mám zde jeden návod, který nemohu rozluštit.

www.ondrejbrandejs.cz/javascript/?x=p-alpha

Zkoušel jsem to trochu posvém a nedaří se.

http://diskuse.jakpsatweb.cz/?action=vthread&forum=1&topic=110228
panther
Profil
Chamurappi:
Proměnná se píše se dvěma ‚n‘.
a ta proměnná se jmenuje „promena“, proto je to s jedním „n“ správně.

Jcas:
a všiml sis rozdíllu mezi tvým zápisem a zápisem na odkázané stránce? Rozdíl, zejména v uvozovkách a syntaxi je zřejmý.
e.filter: alpha(opacity) = from); //tvuj kod
object.filter = "alpha(opacity=" + opacity + ")"; //puvodni kod
Jcas
Profil *
Tohoto rozdílu jsi jsu vědom. Momentálně moc neřeším nastavení pro ME.

Proč v mém kódu funguje (mozila) zeslabování, ale nefunguje zesílení?

Rozbor původního kódu.
Proč když volá funkci, která nastaví opacity obr. předává parametr ('+id+', +to+)?
Proč to nepředá ('id', 'to')?
Při ('id') by se předalo.......odst1
Při ('+id+') se předá........? Mohu porposit vysvětlení pro blbce?

Dále když už se tu teda ptám na kód mohu poprosit vysvětlení?
Proč tam definuje ty tři proměnný s podmínkou negace. Tu negaci nechápu.

if (!from) .... Logické NOT from- co to znamená - není-li from - jak nemůže být from, když ho předá při zavolání funkce.

A absolutně nechápu proměnnou delay. V opakování cyklu dochází ke zvětšování delay a tím by přece mělo docházet ke zpomalování "animace". V tom kolečku (while) odešle hodnoty čím dál tím s větší časovou mezerou. Nicméně animace je zcela plynulá - nechápu!!!
Joker
Profil
Jcas:
Logické NOT from- co to znamená - není-li from - jak nemůže být from
V té poslední části je asi špatně umístěné ne, mělo by to být jak může nebýt, ale:

!from neznamená „není from“, ale negace logické hodnoty from.
if(!from) je splněno v případě, že hodnota from převedená na boolean bude false- čili pokud from bude například false, 0, "" (prázdný řetězec), null apod.
Radek9
Profil
Jcas:
Proč když volá funkci, která nastaví opacity obr. předává parametr ('+id+', +to+)?
Achych ouvej. To bude těžké vysvětlování.
Takže to zkusíme postupně:
"Řetězec"
'Řetězec'
promenna
59 //číslovka
To snad chápete, ne?
var promenna = "řetězec";
alert("Nějaký řetězec a další "+promenna);
alert("A další "+promenna+".");
Takto se spojují řetězce a proměnné. To + je v tomto případě binární operátor a může spojovat čísla, nebo řetězce (takže i proměnné, které jsou čísla, nebo řetězce), jak psal Chamurappi.

if (!from)
var from;
from = true;//!from = false
from = false;//!from = true
from = "řetězec";//!from = false
from = "";//!from = true
…

A absolutně nechápu proměnnou delay…
Protože tam není interval, ale timeout. Proto se pro každý další musí přičíst čas, kdy se prováděl předchozí. Dalo by se to však napsat i elegantněji.
Jcas
Profil *
Asi jsem natvrdlej, ale nechápu. Proměnné from předá hodnotu 100, nebo 10. Ten script už s ní nic nedělá. Tak proč se do toho plete pravda, nebo nepravda. Kdyby šlo o nějakou vlastnost, která plyve true, nebo false, pak bych pochopil, že se dá použít taková negace. Ještě bych to pochopil, kdyby prom. from definoval samotný script a taková negace by mohla posloužit pro kontrolu. Ovšem když si from definuje při volání funkce, tak to prostě nechápu.
Co to má zajistit?
_es
Profil
Jcas:
Kúp si, alebo si požičaj v knižnici nejakú knihu o JavaScripte.
Alebo môžeš začať trebárs tu, no komplexnosti rozsiahlejšej knihy sa to nevyrovná.
Tieto rady tu pre teba asi nemajú zmysel.
Jcas
Profil *
dik. jak psat web jsem si projel kompletně asi 5*. Jediné řešení je asi ta kniha.
Jcas
Profil *
Tak i když tomu stále moc nerozumím má tu uprevený script a funguje to skvěle. Využití- na str. mám osoby a každá osoba má ve svém odstavci několik obrázků a k nim nějaký komentář. Tohle způsobí plynulo výměnů obrázků, včetně komentářů.

<script type="text/javascript">

//script provede plynulou výměnu obrázků, způsobem měnění průhlednosti. 
//Princip je založen na posládaní jednotlivých <div> na sebe. Musíme jim určit přesné rozměry a umístění.
//Když je <div> neprůhledný, není vidět, co je pod ním.
//Když tomuto <divu> nastavíme absolutní průhlednost, nebude vidět a bude vidět <div>, který je umístěn pod ním.
//Tímto způsobem můžeme na sebe naskládát kolik chceme <divů>.

//PRINCIP
//<div> úplně nahoře se zprůhlední a díky tomu je vidět <div> umístěn pod ním.
//následně se zprůhlední druhý div a opět je vidět <div> umístěn pod ním. atd.
//Scriptu předáme počet <divů> umístěných na sobě.
//Jestliže jsou všechny <divy> zprůhledněny a tudíž je vidět poslední dojde k zesílení
//prvního a vrácení všeho do původního stavu. Animace začíná od začátku.

//POŽADAVKY
//<div> přidělíme id=jméno+číslo (např. odst1)
//Jméno můžeme volit jakékoliv a číslo je vždy pořadové. "1" bude úplně nahoře
//funkci voláme s parametry (jméno, poř.číslo, počet <div>)
//např. mám-li na sobě tří <div> každému pčidélím id 
//jméno1 jméno2 jméno3 - jméno1 bude úplně nahoře
//tzn. musím je na sebe naskládat naopak = 3-2-1
//zavolám funkci "AlphaFade.alpha_show" a předám jí parametry (jméno, poř. číslo, počet div)
//poř. číslo bude vždy 1
//počet div  = počet divů, které mám naskládané na sobě.

//ps. Možná kromě základních rozměrů bude nutné nastavit i pozadí (background-color)

var AlphaFade =
  {
  alpha_show : function (kdo, num, pocet)      					
    {
    var id = kdo + num;                                            				 //odchycení id objektu, který chcu měnit
    var e = document.getElementById(id).style;    			
   
    if (e.opacity == 0.1 || e.filter == "alpha(opacity=10)")   		//podmínka pro zjištění, jestli budu zeslabovat, nebo zesilovat
      {
      from = 0;
      to = 100;
      direction=1;
      }
    else {
      from = 100;
      to = 0;
      var direction=-1;
      }
//    if (!duration) duration = 3000;
//    if (!from) from = 100;
//    if (!to) to = 100;
    var totalframes = 100;
    var step = 22;
    var delay = 0;
    var frame = 0;
    alphac=from;

    while (frame < totalframes)												//cyklus, který postupně mení opacity
      {
      frame++;
      alphac=alphac+(1*direction);
      setTimeout("AlphaFade.set_alpha('"+id+"',"+alphac+")", delay);
      delay=delay+step;
      }
    setTimeout("AlphaFade.set_alpha('"+id+"',"+to+");", delay);          
    if (alphac == 100 && num == '1')									//podmínka odchytí okamžik, kdy se opět zviditelnil první objekt
      {
      num++;
         while (num < pocet) 													//cyklus vrátí vše do původního stavu
         {
         var id = kdo + num; 
         setTimeout("AlphaFade.set_alpha('"+id+"', "+alphac+");", delay);
         num++;
         }
      setTimeout("AlphaFade.alpha_show('"+kdo+"',"+1+", "+pocet+");", 3000);   
      }
      else																			 //při všech ostatních situací se vola funkce change
      {
      setTimeout("AlphaFade.change('"+kdo+"', "+num+", "+pocet+");", delay); 
      }
    },
  set_alpha : function (obj,opacity)										//funkce, která definuje opacity objektu na základě parametru
    {																				// který obdrží při volání.
    var object = document.getElementById(obj).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
    },
  change : function (kdo,num,pocet)										//funkce, která změní id, aby jsme mohli provádet show
    {																				//s dalším objektem
    num ++;
    if (num<pocet)																//zjistíme, jestli jsou už všechy objektu zprůhledněny,
      {																				//kromě posledního
      setTimeout("AlphaFade.alpha_show('"+kdo+"', "+num+", "+pocet+");", 3000);			
      }
    else 
      {																				//pokud ano, zavolá se show tak, aby se zviditelnil první objekt.
      var id = kdo + '1';
      setTimeout("AlphaFade.set_alpha('"+id+"', 10);", 3000);
      setTimeout("AlphaFade.alpha_show('"+kdo+"', "+1+", "+pocet+");", 3000);
      }
   }
  }
</script>


Poslední menší problém je přesně napozicovat jednotlivé <div> na sebe. Při hodnotě absolute mám přesnou pozici, která bude u každá osoby jiná, takže to vyžaduje trochu počítání.
Další možnost je posun, ale tím vzniká prázdné místo a navíc prohlížeče se nechovají stejně.

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