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

Cliccando sul bottone, il div dovrebbe scendere...
In IE va bene, in NS6 no, eppure ho usato la sintassi comune a
entrambi, mi sembra.
Mi date una mano?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
	<title>Untitled</title>
	<link href="styletop.css" rel="stylesheet" type="text/css">
	<script type="text/javascript">
	<!-- //
	var moveid1
 
	function attiva1()
	{
		clearTimeout(moveid1);
		if
(parseInt(document.getElementById("menu01").style.top)<20)
		{	
document.getElementById("menu01").style.top=parseInt(document.getElementById("menu01").style.top)+2;
		moveid1=setTimeout("attiva1()",30);
		}
	}
	// -->
	</script>
</head>
<body leftmargin=0 topmargin=0>
<div id="menu01" style="z-index: 25; position: absolute; left: 10;
top: 5;">
<table border="0" cellspacing="2" cellpadding="2">
	<tr>
		<td><a href="#">link 1</a></td>
		<td>&nbsp;|&nbsp;</td>
		<td><a href="#">link 2</a></td>
		<td>&nbsp;|&nbsp;</td>
		<td><a href="#">link 3</a></td>
	</tr>
</table>
</div>
<br><br><br><br><br><br><br>
<form>
<input type="button" value="Move" onClick="attiva1()">
</form>
</body>
</html>
--
Antonio Spatrisano
Orvieto (TR) - ITALY
E-Mail : 
str...@orvienet.it
 
darkt...@libero.it
 
dragon...@tiscalinet.it
----------------------------------------------------------------------
"Because by fate even the gods are cast down
 Weep ye all with me"
----------------------------------------------------------------------

		clearTimeout(moveid1);
A quel che vedo Ns6 si pianta su questa istruzione la _prima_ volta
che la incontra (in effetti non e' ancora un intervallo da
interrompere)
Ho provato a vedere tramite un alert(typeof(moveid1)) come il browser
tratta la variabile  ottenendo:
 (io non lo sapevo ma immagino sia cosa nota...) 
al primo ciclo 'undefined' e poi 'number'
questo sia in IE che in NS6.
Il primo non fa una piega quando gli si comanda il clearTimeout di un
undefined, l 'altro si impressiona e blocca l' esecuzione 
Ora,. appurato che per essere trattato convenientemente moveid1 _deve_
essere un numero proviamo le soluzioni
a) inizializzalo come, appunto,  numero
var moveid1=0
oppure 
b) controlliamo che sia un numero prima di fare il clearTimeout
if(!isNaN(moveid1))/*se e' vero che e' falso che NON sia un
numero....*/
clearTimeout(moveid1)
in entrambi i casi anche NS6 fa il suo dovere 
(Ns6 fa un saltino a sinistra che non riesco a motivare)
Saluti
ps.
Leggi ancora altre risposte da parte di persone piu' qualificate.

in entrambi i casi anche NS6 fa il suo dovere 
Grazie, allora č + semplice
if (moveid1!=undefined){clearTimeout(moveid1);}
o inizializzare cosě
var moveid1=setTimeout('null',1)
Fa sempre il salto cosě? Io fino a domani non posso verificare...


Fa sempre il salto così? Io fino a domani non posso verificare...
Scusa, mi sono spiegato male 
il saltino e' un riallineamento a sx , non progressivo  ma istantaneo
all' avvio del ciclo, della posizione settata con left nella
dichiarazione di stile e che non dovrebbe essere toccata dallo script.
un po' di pixel, non molto ma visibile.
saluti, ritorno a confondermi nell'interminato fluire del tempo ;)