Newsgroup: it.comp.lang.javascript
Titolo: aiuto a debuggare ---non capisco dove cavolo è il bug

ciao a tutti !!
im aiutereste per favore a debuggare questo script. non capisco dove č
l'errore ... ho fatto un errore di sintassi nel chiamare una funzione con
parametro ne setTimeout ?
non ho idea cosa sia sbagliato ...
grazie a tutti !!
CIAO,
Bernardo
<--------------- code-----------------------
function KeySlide(keyNr) {
        while(Picture5.active) {
                if(keyNr==37){
                        Picture5.xpos -= 5
                        Picture5.left = Picture5.xpos
                        setTimeout ("KeySlide('keyNr')",15)
                }
                if(keyNr==38){
                        Picture5.ypos -= 5
                        Picture5.top = Picture5.ypos
                        setTimeout ("KeySlide('keyNr')",15)
                }
                if(keyNr==39){
                        Picture5.xpos += 5
                        Picture5.left = Picture5.xpos
                        setTimeout ("KeySlide('keyNr')",15)
                }
                if(keyNr==40){
                        Picture5.ypos += 5
                        Picture5.top = Picture5.ypos
                        setTimeout ("KeySlide('keyNr')",15)
                }
        }
}
-----------code------------->

                        setTimeout ("KeySlide('keyNr')",15)
a colpo d'occhio direi che se metti le virgolette a 'keyNr' non passi
il parametro keyNr ma la  stringa 
(rilevo i messaggi con ritardo se qualcuno ha gia' risposto mi scuso )

 parametro ne setTimeout ?
Si, il setTimeout è in effetti sbagliato perché devi "scrivergli dentro" 
il parametro:
setTimeout ("KeySlide('"+keyNr+"')",15)
Non so se c'è altro.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

 Non so se c'è altro.
<snip>
grazie ... mi sono guardato la sintassi in una referenza ed infatti hai
ragione ...
ma lo stesso non funziona ... l'explorer non mi riferisce direttamente a
questa funzione/linea qui, ma mi dice che c'è un oggetto non definito quando
chiamo la funzione Init() all'evento OnLoad della pagina ...
ho controllato tutto ma non trovo nulla !
ho messo il file html su 
www.dhtmlfx.net
  , nel secondo punto della tabella,
sliding layers ...
se qualcuno preferisce che io metta tutto il code html qui nel ng lo farò
...
grazie dell'aiuto !!
Ciao,
Bernardo

ATTENZIONE ... ho notato che ora addirittura non solo non funziona, ma mi fa
crashare il browser a cercare di muovere il layer con la tastiera..
ciao,
bernardo

 schrieb im Newsbeitrag
news:a345md$9lp$07$1...@news.t-online.com...


 ho offeso qualcuno o qualche regola che nessuno piů mi risponde ?
Per quel che mi riguarda: sorry, ma ogni volta che leggo i tuoi mex sono 
sempre off-line :-)
Ci do un'occhio spero domani :-)


 > ho offeso qualcuno o qualche regola che nessuno più mi risponde ?


 riuscito, ed è tutto il giorno che provo e riprovo...
Salvata la pagina, me la guardo con calma.
Crasha anche a me (IE5), abbandono IE solo con CTRL-ALT-CANC :-(


 > Ci do un'occhio spero domani :-)
Tutta colpa del while() nella funzione KeySlide() penso perché 
probabilmente mandava in loop il browser, appena l'ho cambiato con if() 
funziona (IE5 - Win98)
Ti ho anche aggiunto dei "return false" nella KeyDown() per intercettare 
bene le frecce, altrimenti il browser scrolla la pagina prima di muovere 
le immagini. Cmq scrolla lo stesso e l'effetto è un po' antiestetico.
Cerca di far rientrare tutta la pagina nella schermata così ti metti al 
sicuro dallo scrolling di pagina.
Ti attacco qui le due funzioni modificate:
function keyDown(e) {
var ieKey=event.keyCode
        if(ieKey ==37 && !Picture5.active) {
                Picture5.active = true
                KeySlide(ieKey)
                return false;   // <--- Aggiunto
        }
        if(ieKey==38 && !Picture5.active) {
                Picture5.active = true
                KeySlide(ieKey)
                return false;   // <--- Aggiunto
        }
        if(ieKey==39 && !Picture5.active) {
                Picture5.active = true
                KeySlide(ieKey)
                return false;   // <--- Aggiunto
        }
        if(ieKey==40 && !Picture5.active) {
                Picture5.active = true
                KeySlide(ieKey)
                return false;   // <--- Aggiunto
        }
}
function KeySlide (keyNr) {
       if (Picture5.active) {
                if(keyNr==37){
                        Picture5.xpos -= 5
                        Picture5.left = Picture5.xpos
                        setTimeout ("KeySlide('"+keyNr+"')",15)
                }
                if(keyNr==38){
                        Picture5.ypos -= 5
                        Picture5.top = Picture5.ypos
                        setTimeout ("KeySlide('"+keyNr+"')",15)
                }
                if(keyNr==39){
                        Picture5.xpos += 5
                        Picture5.left = Picture5.xpos
                        setTimeout ("KeySlide('"+keyNr+"')",15)
                }
                if(keyNr==40){
                        Picture5.ypos += 5
                        Picture5.top = Picture5.ypos
                        setTimeout ("KeySlide('"+keyNr+"')",15)
                }
        }
}
-- 


 Cerca di far rientrare tutta la pagina nella schermata cosě ti metti al


 non sai mica come mai il while faceva crashare tutto ? è strano ...
Non è strano.
While continua l'esecuzione finché la var di controllo non cambia di 
stato.
Ma la variabile devi cambiarla da dentro il ciclo, penso che come la 
cambiavi tu (dall'esterno) non la vedeva nuova per uno di questi due 
motivi:
1.- il while continua in loop occupando totalmente il browser (ecco 
perché alla fine crashava)
2.- sia obbligatorio cambiarla dentro il ciclo (questo non lo so per 
certo, penso che la 1. sia quella giusta).
