Newsgroup: it.comp.lang.javascript
Titolo: Perchè non funziona?

Provate questo codice:
<html>
<head>
<title>Text Animator</title>
</head>
<script language="JavaScript"><!--
temp=""
nextchar=-1;
nextline=1;
cursor=""
function animate(numel)
{
if (temp==line[nextline] & temp.length==line[nextline].length &
nextline!=lines)
 {
 nextline++;
 nextchar=-1;
 document.bannerform.elements[numel].value=temp;
 temp="";
 setTimeout("nextstep(numel)",1000)
 }
// Per continuare all'infinito togliere il commento
/*else if (nextline==lines & temp==line[nextline] &
temp.length==line[nextline].length)
 {
 nextline=1;
 nextchar=-1;
 document.bannerform.elements[numel].value=temp;
 temp="";
 setTimeout("nextstep(numel)",1000)
 }*/
else
 {
 nextstep(numel)
 }
}
function nextstep(num)
{
/*
if (cursor=="\\")
 {
 cursor="|"
 }
else if (cursor=="|")
 {
 cursor="/"
 }
else if (cursor=="/")
 {
 cursor="-"
 }
else if (cursor=="-")
 {
 cursor="\\"
 }
*/
cursor=line[nextline].charAt(nextchar+1);
nextchar++;
temp+=line[nextline].charAt(nextchar);
document.bannerform.elements[num].value=temp+cursor
setTimeout("animate(num)",25)
}
line=new Object()
line[1]="JavaScript text animator"
line[2]="Version 1.5"
line[3]="by Damiani Omar"
lines=3 //--Number of lines
//--Don't edit below this line
document.write('<form name="bannerform">')
document.write('<p><input type="text" name="banner" size="52"
style="background-color: rgb(0,0,0); color: rgb(0,255,0); font-family:
Architecture; font-size: 14pt; border: medium none" onfocus="blur()"></p>')
document.write('<p><input type="text" name="banner1" size="52"
style="background-color: rgb(0,0,0); color: rgb(0,255,0); font-family:
Architecture; font-size: 14pt; border: medium none" onfocus="blur()"></p>')
document.write('</form>')
var numel=0,num=0;
animate(1)
// --></script>
<body bgcolor="#000000" text="#FFFFFF">
</body>
</html>
Ho creato 2 campi testo, ma qualsiasi parametro che do' alla funzione
animate (nell'esempio č 1) mi cambia il contenuto del primo campo (che
sarebbe lo 0).
Perchč?!?
Damiani "Bromarock" Omar

<body bgcolor="#000000" text="#FFFFFF" onload="animate(1)">
metti nel body il richiamo alla funzione..
setTimeout("animate(num)",25)
mi incuriosisce il come possa andare!!!
Passi una string "num"
.. e viene valutato poi come un valore...
IE, permette proprio tutto,
sembra che anche senza che tu metta eval(num), siccome
hai chiamato una variabile globale num=0, te lo passi
e setti tale argomento che passi come string al valore 0..
la sintassi giusta č...
setTimeout("animate("+num+")",25)
--
Bye
Ro<*ż*>berto

Per me hai fatto un po' di confusione tra variabili locali e globali. Usa solo le ultime, se ti ci devi riferire in continuazione...
D'ora in poi non chiamare + direttamente animate(), ma una funzione di avvio che non verrà richiamata in continuazione, per esempio DoAnimation(), e vedi che funziona...
Prova così:
<html>
<head>
<title>Text Animator</title>
</head>
<script language="JavaScript"><!--
temp=""
nextchar=-1;
nextline=1;
cursor=""
var DNum;
function DoAnimation(numel)
{
DNum=numel;
animate();
}
function animate()
{
if (temp==line[nextline] & temp.length==line[nextline].length & nextline!=lines)
{
  nextline++;
  nextchar=-1;
  document.bannerform.elements[DNum].value=temp;
  temp="";
  setTimeout("nextstep()",1000)
}
// Per continuare all'infinito togliere il commento
/*else if (nextline==lines & temp==line[nextline] &
temp.length==line[nextline].length)
{
  nextline=1;
  nextchar=-1;
  document.bannerform.elements[DNum].value=temp;
  temp="";
  setTimeout("nextstep()",1000)
}*/
else
{
  nextstep()
}
}
function nextstep()
{
/*
if (cursor=="\\")
{
  cursor="|"
}
else if (cursor=="|")
{
  cursor="/"
}
else if (cursor=="/")
{
  cursor="-"
}
else if (cursor=="-")
{
  cursor="\\"
}
*/
cursor=line[nextline].charAt(nextchar+1);
nextchar++;
temp+=line[nextline].charAt(nextchar);
document.bannerform.elements[DNum].value=temp+cursor
setTimeout("animate()",25)
}
line=new Object()
line[1]="JavaScript text animator"
line[2]="Version 1.5"
line[3]="by Damiani Omar"
lines=3 //--Number of lines
//--Don't edit below this line
document.write('<form name="bannerform">')
document.write('<p><input type="text" name="banner" size="52" style="background-color: rgb(0,0,0); color: rgb(0,255,0); font-family: Architecture; font-size: 14pt; border: medium none" onfocus="blur()"></p>')
document.write('<p><input type="text" name="banner1" size="52" style="background-color: rgb(0,0,0); color: rgb(0,255,0); font-family: Architecture; font-size: 14pt; border: medium none" onfocus="blur()"></p>')
document.write('</form>')
//var numel=0,num=0;
DoAnimation(0)
// --></script>
<body bgcolor="#000000" text="#FFFFFF">
</body>
</html>
Ciao.
Darius. (
www.infotronica.it/darius/
)

 wrote in message
7iuqtf$iie$1...@serv1.iunet.it...
Per me hai fatto un po' di confusione tra variabili locali e globali. Usa
solo le ultime, se ti ci devi riferire in continuazione...
D'ora in poi non chiamare + direttamente animate(), ma una funzione di avvio
che non verrŕ richiamata in continuazione, per esempio DoAnimation(), e vedi
che funziona...
Prova cosě:
<html>


function DoAnimation(numel)
{
DNum=numel;
animate();
}


else
{
  nextstep()
}
}


lines=3 file://--Number of lines
file://--Don't edit below this line
document.write('<form name="bannerform">')
document.write('<p><input type="text" name="banner" size="52"
style="background-color: rgb(0,0,0); color: rgb(0,255,0); font-family:
Architecture; font-size: 14pt; border: medium none" onfocus="blur()"></p>')
document.write('<p><input type="text" name="banner1" size="52"
style="background-color: rgb(0,0,0); color: rgb(0,255,0); font-family:
Architecture; font-size: 14pt; border: medium none" onfocus="blur()"></p>')
document.write('</form>')
file://var numel=0,num=0;
