Autor Zpráva
janharvalik
Profil *
dobrý den,
poradíte mi kde je chyba?
<script type="text/javascript">
function slide(play){
var pole = new Array();
         pole[0] = "red";
         pole[1] = "blue"; 
         pole[2] = "green";      
         pole[3] = "orange";     
         pole[4] = "blue";     
         pole[5] = "purple";
         var delka=pole.length-1;
    if(play){
         document.getElementById("foto").style.background=pole[a];

         if(a==delka){a=0;}else{a++;}
         setTimeout("slide()",1000);};
         
                }
                
         else{
         document.getElementById("foto").style.background="yellow";
                }
           </script>



poznámka: pole je uděláno takto protože ho vypisuji pomocí php.
Tori
Profil
janharvalik:
var a=0;   // promenna nebyla definovana
function slide(play){
var pole = new Array();
    pole[0] = "red";
    pole[1] = "blue"; 
    pole[2] = "green";      
    pole[3] = "orange";     
    pole[4] = "blue";     
    pole[5] = "purple";
    var delka=pole.length-1;
    if(play){
      document.getElementById("foto").style.background=pole[a];

      if(a==delka){a=0;}else{a++;}
      setTimeout("slide()",1000);};   
// tohle je navic, protoze tim uzavrete podminku if(play) a nasledujici sloz.zavorka uzavre telo funkce,
//  ...a else (za funkci, bez if) pak vyhodi syntaktickou chybu  
 
    }
                
    else{
      document.getElementById("foto").style.background="yellow";
    } 
}  // tady by se teprv melo uzavrit telo funkce
                

Zkuste použít nějaký editor se zvýraňováním protějších závorek, uvidíte hned, který blok kódu uzavíráte. Dobrý doplněk do FF/Chrome/Seamonkey je Web Developer Toolbar, kde v chybové konzoli javascriptu uvidíte prakticky totéž, co jsem napsala, jenom trochu rychleji ;-)
janharvalik
Profil *
Tori:
promenna nebyla definovana
proč nebyla definována?
janharvalik
Profil *
proč se slide() provede pouze jednou?
Chamurappi
Profil
Reaguji na janharvalika:
proč nebyla definována?
Protože jsi ji nedefinoval.
Mimochodem, nesliboval jsem ti už někdy, že budu špatně nazvané dotazy mazat? Název „špatná funkce“ je docela špatný, nevystihuje podstatu dotazu, nepopisuje chybu.

proč se slide() provede pouze jednou?
Protože podruhé by se volala jen tehdy, kdyby bylo play pravdivé, jak testuješ na řádku 11.
janharvalik
Profil *
Chamurappi:
Mimochodem, nesliboval jsem ti už někdy, že budu špatně nazvané dotazy mazat? Název ‚špatná funkce‘ je docela špatný, nevystihuje podstatu dotazu, nepopisuje chybu.
jak by jste to nazval vy? Když nevím kdy je chyba, nemohu ji napsat.

Chamurappi:
Protože podruhé by se volala jen tehdy, kdyby bylo play pravdivé
vždyť je, nebo ne?
Nox
Profil
janharvalik:
Proč bys ho v PHP nemohl vypsat jako ["red", "blue", "green"...] ?
delka je asi trochu zbytečná

nevidím první volání slide(), ale další voláš bez argumentu, toho sis nevšiml? jak to pak může být bráno kladně?
janharvalik
Profil *
Nox:
Proč bys ho v PHP nemohl vypsat jako ["red", "blue", "green"...] ?
protože nevím co dělat s čárkami.


<body onLoad='slide(true);' >

<div onClick="slide(false);" id="foto" >
text
</div>

<script type="text/javascript">
function slide(play){
var pole = new Array();
         pole[0] = "red";         
         pole[1] = "blue";         
         pole[2] = "green";         
         pole[3] = "orange";        
         pole[4] = "blue";
         pole[5] = "purple";
         var delka=pole.length-1;

if(play){        
         document.getElementById("foto").style.background=pole[a];
         if(a==delka){a=0;}else{a++;}
         setTimeout("slide(true)",1000);
         }
         
         else{
         document.getElementById("foto").style.background="yellow"; 
         }
         };
         </script>
Tori
Profil
janharvalik:
protože nevím co dělat s čárkami.
co třeba:
$barvy = array('red', 'blue', 'green', 'orange', 'blue', 'purple');
echo 'var pole = ["' . implode('", "', $barvy) . '"];';
Místo echa dosaďte to, co používáte na poskládání .js souboru.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0