2013-02-20 19 views
7

Perché ottengo Uncaught SyntaxError: Unexpected identifier se funziona una volta?setInterval() - identificatore imprevisto - ma funziona una volta

Ci sono un sacco di questi su StackOverflow. La battuta è di solito un errore di battitura da qualche parte nella sceneggiatura.

Funziona una volta, quindi fornisce 1 messaggio di errore al secondo.

Qui sto cambiando i colori degli stati su una mappa:

<!-- language: lang-js --> 
<script type="text/javascript"> 
colors = [ 'rgba(255,0,0,0.1)','rgba(0,255,0,0.1)','rgba(0,0,255,0.1)' ]; 

$(document).ready(function(){ 

    setInterval(
     $("ul").children().eq(Math.floor(50*Math.random())).css('color', colors[Math.floor(3*Math.random())]) 
    ,1000); 

}); 
</script> 

risposta

17

Ti manca function(){} per avvolgere il vostro codice.

setInterval(function(){ 
    $("ul").children().eq(Math.floor(50*Math.random())).css('color', colors[Math.floor(3*Math.random())]) 
},1000); 

funziona una volta perché esegue il codice interno alla ricerca di una funzione o stringa da restituire. Quando uno non lo è, fallisce con un errore js.

0

setInterval accettare parametri tra virgolette:

<script type="text/javascript"> 
colors = [ 'rgba(255,0,0,0.1)','rgba(0,255,0,0.1)','rgba(0,0,255,0.1)' ]; 

$(document).ready(function(){ 

    setInterval(
     '$("ul").children().eq(Math.floor(50*Math.random())).css("color", colors[Math.floor(3*Math.random())])' 
    ,1000); 

}); 
</script> 
Problemi correlati