Difatti, questo funziona, come postato sotto, senza Timer: le due funzioni si passano l'argomento l'un l'altra.
caricaList(genere) riceve l'URL reale del brano .mp3 dal pulsante, lo veicola sul termine di servizio genere, invoca la carica() ancora dandole genere che poi sull'altra funzione viene preso come brano e regolarmente veicolato alla stringa di esecuzione che procede con successo.
codice:
function carica(brano) {
document.getElementById("schermo").innerHTML = beginHTML + brano + endHTML;
}
function caricaList(genere){
carica(genere);
}
Ma se ci metti di mezzo il setTimeout questo trasferimento non avviene più !!!
codice:
function caricaList(genere){
window.setTimeout("carica(genere)", 2000);
}
window. o non window. che sia.
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Play List</title>
<script type="text/javascript">
<!--
var beginHTML = "
<embed src=\"";
var endHTML = "\" autostart=\"true\" width=\"180\" height=\"16\"> </p>scritto .innerHTML";
function carica(brano) {
alert("function carica(brano) (se avviata) \n\nbrano = "+brano);
document.getElementById("schermo").innerHTML = beginHTML + brano + endHTML;
}
function caricaList(genere){
alert("genere = "+genere);
carica(genere);
alert("function caricaList(genere) (se eseguita) \n\ngenere = "+genere);
}
-->
</script>
</head>
<body bgcolor="#D0D090" text="#800000">
<div align="center">
<input type="button" value="test function carica(brano)"
onclick="carica('http://digidownload.libero.it/straystudio.mp3_01/Edelweiss-n01.mp3')">
<input type="button" value="test function caricaList(genere)"
onclick="caricaList('http://digidownload.libero.it/straystudio.mp3_01/Edelweiss-n01.mp3')">
<div name="schermo" id="schermo" style="width: 200px; height: 80px; border: 2px solid #800000;"></div>
</div>
</body>
</html>
P.S.: Puoi fare una ulteriore verifica mattendo un alert(' ') in testa ed in coda alla funzione carica(genere) che setTimeout sarebbe deputato a richiamare; vedi che il secondo alert('2') non parte, l'inghippo è proprio lì !
codice:
function caricaList(genere){
window.setTimeout("alert('1'); carica(genere); alert('2');", 5000);
}
E allora come mai l' alert(' ') messo in fondo alla function (prima dell'ultima }) partiva sempre, come se niente fosse bloccato ?!??
Eh certo, c'è il ritardo del Timer, il problema "dormiente" insorge dopo: fa prima a scorrere regolarmente la function, che non setTimeout a prendere in considerazione il suo carico; anche se gli dessimo solo 1 di delay.
Chi volesse può testare il procedimento con immagini invece che audio, se incontra problemi coi Players.