JavascriptProva

martedì 10 gennaio 2012

Maledetti parametri con setInterval!

Questa è tosta! Il passaggio dei parametri con setInterval, come accidenti si fa?

Costruisco la sintassi che mi ha fatto impazzire...

Questa è una "chiamata a catena" fra funzioni, che si passano un parametro. E qui va tutto bene. Il parametro dalla funzione chiamante() viene passato alla funzione chiamata() e qui messo in una casella di messaggio. Okay.
<script>
function chiamata(parametro) {
 alert(parametro);
}

function chiamante() {
 var parametro="cicciobello";
 chiamata(parametro);
}
</script>
<body onClick= "chiamante()">
</body>


Adesso faccio passare il parametro direttamente dall'evento onClick di BODY:
<script>
function chiamata(parametro) {
 alert(parametro);
}

function chiamante(parametro) {
 chiamata(parametro);
}
</script>
<body onClick= "chiamante('cicciobello')">

<div id="testo" style="position:absolute;left:0px;top:50px;width:50px;height:50px;background-color:blue;color:green"></div>
</body>


...e funziona ancora...

Adesso uso un setInterval:
<script>
function chiamata(parametro) {
 alert(parametro);
}

function chiamante(parametro) {
 setInterval("chiamata(parametro)",5000);
}
</script>
<body onClick= "chiamante('cicciobello')">

<div id="testo" style="position:absolute;left:0px;top:50px;width:50px;height:50px;background-color:blue;color:green"></div>
</body>


...e il tutto mi rimane completamente muto!

Ho trovato questa sintassi, che pare risolutiva:
<script>
function chiamata(parametro) {
 alert(parametro);
}

function chiamante(parametro) {
 setInterval(function() {chiamata(parametro)},5000);
}
</script>
<body onClick= "chiamante('cicciobello')">

<div id="testo" style="position:absolute;left:0px;top:50px;width:50px;height:50px;background-color:blue;color:green"></div>
</body>
Forse il parametro, nel momento in cui viene passato nell'ambito di una stringa, non viene più riconosciuto? Boh! Questa assoluta assenza di rigore per quanto riguarda i tipi è l'aspetto che più mi confonde in JavScript!

Nessun commento:

Posta un commento