Newsgroup: it.comp.lang.javascript
Titolo: DOM lentissimo con Internet Explorer/Velocissimo con Firefox

Ciao a tutti
Premetto che non sono un'esperto di DOM.
Immaginate la situazione di avere speso 2 mesi di tempo per creare
un'applicazione per poi accorgermi che le istruzioni DOM eseguite da
Internet Explorer sono circa 10 volte più lente rispetto a Firefox (10
secondi contro 1,5 cronometrati).
E' il mio caso.
Vorrei un'aiuto per cercare di risolvere il problema senza stravolgere
il codice e la logica dell'applicazione.
Il problema in parole povere è questo:
da una select, alla onchange eseguo una funzione javascript che
utilizza istruzioni DOM.
Purtroppo la onchange è abbastanza frequente e percio l'utente stà in
attesa 10 secondi ogni volta che cambia un valore.
La funzione Javascript si chiama: DOSELMACH ed esegue alla fine la
funzione RICALCOLA.
Richiamata dalla onchange dalla select: SELMACH
Allego il codice.
Tenete presente che le righe nella tabella a video sono 52.
Ne allego solo alcune per esempio.
GRAZIE A TUTTI IN ANTICIPO.
<html>
<head>
<title>Piano di produzione Assemblaggio. Programma WMAG46</title>
<link href="/cgiexe/css/as400.css" rel="stylesheet" type="text/css">
<style TYPE="text/css">
thead {display: table-header-group;}
tfoot {display: table-footer-group;}
</style>
<!-- special style sheet for printing (MedCo) -->
<style media="print">
.noprint     { display: none }
</style>
<!--script language="Javascript" src="/cgiexe/jscripts/nof5.js"
type="text/javascript"-->
<!--/script-->
<script language="Javascript" src="/cgiexe/jscripts/scw.js" type="text/
javascript">
</script>
<script language="Javascript" src="/cgiexe/jscripts/handleEnter.js"
type="text/javascript">
</script>
<script language=javascript>
//===================================================================
// E' variata la Macchina nella select della testata e di conseguenza:
// - rileggo tutte le righe del subfile
// - su tutte le righe della vecchia macchina forzo readonly su tutti
i campi di I/O
// - su tutte le righe della vecchia macchina forzo il colore di
backgr. verde
//===================================================================
function doselmach() {
     document.form1.totpezzimach.value=0
     document.form1.oreocc.value=0
     document.form1.orelibere.value=document.form1.oredispon.value
    //trovo la produttivitÓ della Macchina dalla opzione selezionata
della Select delle macchine
    //e aggiorno il campo pezzi turno effettivi
    var x=document.getElementById("IdSelMach")
    var text=x.options[x.selectedIndex].text
    var pos=text.indexOf("Pz/Turno:")
    if (pos==-1) {
       document.form1.pezzieff.value=0
       } else {
       var pezzieff=text.substring(pos+9)
       document.form1.pezzieff.value=text.substring(pos+9)
    }
    //mi posiziono sul campo della data inizio macchina, in modo che
l'utonto non possa scorrere per sbaglio
    //la select delle Macchine che genera lentezza con IE
    document.form1.datainimach.focus()
    //document.form1.datainimach.select()
    for (k=0; k<1000; k++) {
		if (document.form1.sel[k]==undefined) {return false}
			if ((document.form1.selmach.value!=document.form1.mach[k].value) &&
(document.form1.mach[k].value!="")) {
				document.getElementById("pezzi"+k).readOnly=true
	            document.getElementById("seq"+k).readOnly=true
 
document.getElementById('seq'+k).style.background="#00FF7F"  //verde
	            document.getElementById("prta"+k).readOnly=true
	            document.getElementById("comme"+k).readOnly=true
 
document.getElementById('macch'+k).style.background="#00FF7F" //verde
				document.getElementById('macch'+k).style.font="bold 12px
arial,serif"
				document.getElementById('macch'+k).style.border="0 none #ffffff"
			}
	        if
((document.form1.selmach.value==document.form1.mach[k].value) &&
(document.form1.mach[k].value!="")) {
				document.getElementById("pezzi"+k).readOnly=false
	            document.getElementById("seq"+k).readOnly=false
 
document.getElementById('seq'+k).style.background="#faf890"  //giallo
	            document.getElementById("prta"+k).readOnly=false
 
document.getElementById('macch'+k).style.background="#FFE303"  //
giallo
				document.getElementById('macch'+k).style.font="bold 12px
arial,serif"
				document.getElementById('macch'+k).style.border="0 none #ffffff"
				document.getElementById("comme"+k).readOnly=false
			}
			//ricalcolo tutto dopo avere cambiato la Macchina
		    Ricalcola()
	}
}
//===================================================================
// Questa funzione viene richiamata:
// alla ONCHANGE del campo PEZZI del subfile ad ogni riga del subfile
// alla ONBLUR del campo Pezzi turno effettivi
//
// Lo scopo Þ quello di aggiornare al volo tutti i campi di totale a
video dopo una modifica.
//===================================================================
function Ricalcola() {
//-----------------------------------------------------------------------------------------
// Ricalcolo e Aggiorno i GG di differenza tra la data inizio della
Macchina scelta e la
// data fine inserita in testata
//-----------------------------------------------------------------------------------------
// creo l'array della data inizio Macchina con 3 elementi: anno/mese/
giorno
var entry1 = document.form1.datainimach.value.split('/');//splits
input value;
y1=entry1[2]*1
m1=entry1[1]*1-1;//sets months to default values i.e Jan = 0; Feb = 1;
etc.
d1=entry1[0]*1
// creo l'array della data finale di programmazione con 3 elementi:
anno/mese/giorno
var entry2 = document.form1.datafinprog.value.split('/');//splits
input value;
y2=entry2[2]*1
m2=entry2[1]*1-1;//sets months to default values i.e Jan = 0; Feb = 1;
etc.
d2=entry2[0]*1
//creo i campi data
var data1 = new Date(y1,m1,d1);
var data2 = new Date(y2,m2,d2);//sets the new date
if (data1>data2) {
   alert("La Data iniziale di Programmazione e' maggiore della Data
finale")
   document.form1.datainimach.focus()
   document.form1.datainimach.select()
   return
}
//calcolo la differenza in millisecondi tra data finale (piu' alta) e
iniziale (piu' bassa)
dif = data2-data1
// Math.ceil() - arrotonda un numero (per eccesso) all'intero
successivo (es: 0.5 = 1)
dif = Math.ceil(dif/1000/60/60/24)  //differenza in giorni
//----------------------------------------------------
// Ricalcolo e Aggiorno le ore Macchina disponibili
//----------------------------------------------------
document.form1.oredispon.value=dif*24
//------------------------------------------------------
// Ricalcolo e Aggiorno:
// 1) il N‹ totale pezzi inseriti dall'utente
// 2) il N‹ totale pezzi riferito alla macchina scelta
// 2) le ore macchina occupate
// 3) le ore macchina libere
//------------------------------------------------------
var totpezziass=0
var totpezzimach=0
var oreocc=0
//Calcolo:
//Il totale pezzi (TOTPEZZIASS) e il totale Pezzi relativo alla
Macchina scelta (TOTPEZZIMACH)
//In realtÓ qui i totali li faccio sempre, anche se la checkbox non Þ
segnata, altrimenti
//se l'utente togliesse la spunta, non farei il ricalcolo corretto.
//I totali sono 2 perchÞ:
//TOTPEZZIASS Þ il totale generale in fondo
//TOTPEZZIMACH Þ il totale pezzi assegnato alla macchina scelta, per
fare il conteggio delle ore Occupate/Libere
if (document.form1.nbrrecs.value>1) {
    for (m=0; m<1000; m++) {
       if (document.form1.sel[m]==undefined) {break}
          var totpezziass=totpezziass+document.form1.pezzi[m].value*1
          if ((document.form1.selmach.value!="")) {
               if
(document.form1.selmach.value==document.form1.mach[m].value) {
                   totpezzimach=totpezzimach
+document.form1.pezzi[m].value*1
               }
          }
    }
}
if (document.form1.nbrrecs.value==1) {
    if ((document.form1.selmach.value!="")) {
         var totpezziass=totpezziass+document.form1.pezzi.value*1
         totpezzimach=totpezzimach+document.form1.pezzi.value*1
    }
}
//aggiorno il Tot.Pezzi, ore macchina occupate e ore macchina libere
    document.form1.totpezzimach.value=totpezzimach
	document.form1.totpezziass.value=totpezziass
	if ((document.form1.pezzieff.value!="0") &&
(document.form1.pezzieff.value!="")) {
	     document.form1.oreocc.value=Math.round((totpezzimach/
document.form1.pezzieff.value*1)*8)
	     document.form1.orelibere.value=document.form1.oredispon.value*1-
document.form1.oreocc.value*1
	     //se le ore libere solo <0 lo sfondo diventa rosso. Diversamente
Þ giallo.
	     if (document.form1.orelibere.value<0) {
 
document.getElementById('orelibere').style.background="#FF030D" //
rosso
	         document.getElementById('orelibere').style.font="bold 12px
arial,serif"
	         document.getElementById('orelibere').style.border="2 solid
black"
	         } else {
 
document.getElementById('orelibere').style.background="#FFE303" //
giallo
	         document.getElementById('orelibere').style.font="bold 12px
arial,serif"
	         document.getElementById('orelibere').style.border="2 solid
black"
	     }
	}
//fine function
}
</script>
</head>
<body text=black link=blue vlink=purple alink=blue>
<center>
<form name=form1 method=post action="/cgiexep/wmag47.jsp">
<input type=hidden name=ts value="2007-08-29-17.36.08.716000">
<input type=hidden name=datafinprog value="07/09/2007">
<input type=hidden name=wfami value="100100">
<input type=hidden name=setpia value="36">
<input type=hidden name=annpia value="2007">
<input type=hidden name=setordini value="36">
<input type=hidden name=annordini value="2007">
<input type=hidden name=setordfin value="37">
<input type=hidden name=annordfin value="2007">
<input type=hidden name=pnicim value="N">
<table width=1050>
<tr>
<td width=150 align=left valign=top><img src="/cgiexe/guala1.gif">
</td>
<td class="noprint" align=center>
<input type="submit" value="Memorizza Piano" onclick="return
checkform()" class=buttong>
</td>
<td class="noprint" align=center>
<input type="button" value="Da Prod.su 10 sett" onclick="daprodurre()"
class=buttong>
</td>
<td class="noprint" align=center>Uscita
<input type="image" src="/cgiexe/uscita.gif" border=0 alt="Ritorna
alla scelta della Famiglia" onclick="uscita();return false">
</td>
<td class="noprint" align=center>PDF
<input type="image" src="/cgiexe/plugpdf.gif" border=0 alt="Creazione
PDF. Per crearlo utilizzare la stampante CutePDF"
onclick="StampaPDF();return false">
</td>
<td class="noprint" align=center>Stampa
<input type="image" src="/cgiexe/stampante.gif" border=0 alt="Stampa
la pagina corrente." onclick="Stampa();return false;">
</td>
</tr>
</table>
<table width=1050>
<tr>
<td align=center>
<h3><font color=black>MODIFICA&nbsp;PIANO PRODUZIONE ASSEMBLAGGIO
DELLA SETTIMANA 36&nbsp;/&nbsp;2007</font></h3>
</td>
</tr>
<tr><td align=center><h3><font color=black>TRIGGER TS1</font></h3></
td></tr>
<tr>
<td align=left>
Ordini Clienti da Programmare: dalla settimana&nbsp;<b>36/2007</
b>&nbsp;alla settimana&nbsp;<b>37/2007</b>
</td>
</tr>
</table>
<!--in questa select il campo DESCL della option contiene sia la
descrizione della Macchina che la produttivitÓ in Pezzi preceduta-->
<!--dalla dicitura fissa "Prod."-->
<!--Lo scopo Þ quello che alla onchange della Macchina, devo riempire
il campo pezzi turno effettivi senza andare sul database-->
<!--Nella funzione "doselmach" estraggo il N‹ Pezzi e aggiorno pezzi
turno effettivi. Diversamente non so come fare!!!-->
<br>
Macchina
<select class=iform name=selmach size=1 onChange=doselmach()
id="IdSelMach" onkeypress="return handleEnter(this, event)">
<option value="">&nbsp;
</option>
<option value="M327">M327&nbsp;ASS.TS1 4ª PARTE GEFIT VEL
(1)&nbsp;&nbsp;Pz/Turno:23000
</option>
<option value="M328">M328&nbsp;ASS.TS1 4ª PARTE GEFIT VEL
(2)&nbsp;&nbsp;Pz/Turno:23000
</option>
<option value="M330">M330&nbsp;ASS.TS1 4ª PARTE BETT.
TERMOLI&nbsp;&nbsp;Pz/Turno:35000
</option>
<option value="M346">M346&nbsp;ASS.4 PARTE TR&nbsp;&nbsp;Pz/Turno:
10000
</option>
</select>
<!--pezzi turno effettivi-->
&nbsp;&nbsp;&nbsp;&nbsp;Pezzi turno effettivi&nbsp;
<input type=text name=pezzieff size=6 maxlength=6 readonly
class=readonlyyellow onkeypress="return handleEnter(this, event)">
<!--data inizio programmazione con calendario-->
&nbsp;&nbsp;&nbsp;&nbsp;Data inizio Progr&nbsp;
<input type=text name=datainimach size=10 maxlength=10 readonly
value="29/08/2007" class=readonlyyellow onkeypress="return
handleEnter(this, event)">
<input type="image"
onclick="scwNextAction=Ricalcola.runsAfterSCW(this);scwShow(document.getElementById('datainimach'),this,
6,0);return false;"
      img src="/cgiexe/calendarsmall.gif" border="0" alt="Scegli la
data inizio dal calendario">
<!--data fine programmazione-->
&nbsp;&nbsp;&nbsp;&nbsp;Data fine:<b>VEN&nbsp;07/09/2007</b>
<br>
<br>
Totale pezzi assegnati alla Macchina:&nbsp;&nbsp;</b><input type=text
name=totpezzimach readonly size=6
       class=readonlyyellow onkeypress="return handleEnter(this,
event)">
Ore Macchina Disponibili&nbsp:&nbsp;&nbsp;<input type=text
name=oredispon size=4 maxlength=4 readonly
       class=readonlyyellow onkeypress="return handleEnter(this,
event)">
Ore Macchina Occupate&nbsp:&nbsp;&nbsp;<input type=text name=oreocc
size=4 maxlength=4 readonly
       class=readonlyyellow onkeypress="return handleEnter(this,
event)">
Ore Macchina Libere&nbsp:&nbsp;&nbsp;<input type=text name=orelibere
size=4 maxlength=4 readonly
       class=readonlyyellow onkeypress="return handleEnter(this,
event)" id="orelibere">
<table cellpadding=2 cellspacing=0 border=5>
<thead>
<tr>
<td class=small9px valign=top><b>Cliente</b></td>
<td class=small9px valign=top><b>Vincolo</b></td>
<td class=small9px valign=top><b>Ordine</b></td>
<td class=small9px valign=top><b>St</b></td>
<td class=small9px valign=top><b>Set</b></td>
<td class=small9px valign=top><b>Data Sped</b></td>
<td class=small9px valign=top><b>Codice articolo</b></td>
<td class=small9px valign=top><b>in Ordine</b></td>
<td class=small9px valign=top><b>da Produrre</b></td>
<td class=small9px valign=top><b>Macchina</b></td>
<td class=small9px valign=top><b>Seq</b></td>
<td class=small9px valign=top><b>Pezzi</b></td>
<td class=small9px valign=top><b>Pta'</b></td>
<td class=small9px valign=top><b>Bolla Nicim</b></td>
<td class=small9px valign=top><b>Sel</b></td>
<td class=small9px valign=top><b>Commento per i capiturno</b></td>
</tr>
</thead>
<tr>
<td class=small9px align=left nowrap>190770&nbsp;BARTOLINE LIMITED-GB</
td>
<td class=small9px align=left nowrap>CRC-CERE-ON/OFF-DOWLEX</td>
<td class=small9px align=left nowrap>115978/1</td>
<td class=small9px align=left nowrap>Firm</td>
<td class=small9px align=left nowrap><font color=black>35</font></td>
<td class=small9px align=left nowrap>VEN&nbsp; 31/08/2007&nbsp;*</td>
<td class=small9px align=left nowrap>80A-RB0B0-1705</td>
<td class=small9px align=right nowrap>36.000</td>
<td class=small9px align=right nowrap><font color=red><b>9.000</b></
td>
<input type=hidden name=pezzidapro value=9000>
<td class=small9px><input type=text name=mach size=4 maxlength=4
readonly id='macch0' class=readonlybianco11px value=M330></td>
<td class=small9px><input type=text name=seq size=3 maxlength=3
id='seq0' onBlur=checkdupseq("1") tabindex="1" value=1></td>
<td class=small9px><input type=text name=pezzi size=6 maxlength=6
id='pezzi0' onChange=Ricalcola() tabindex="2" value=9000></td>
<td class=small9px><input type=text name=prta size=1 maxlength=1
id='prta0' tabindex="3" value=1></td>
<td class=small9px><input type=text name=rifni size=7 maxlength=6
readonly class="readonly" tabindex="4" value=></td>
<td class=small9px><input type=checkbox name=sel onClick=dosel("1")
value="1" checked></td>
<td class=small9px><input type=text name=comme size=40 maxlength=40
id='comme0' class=iform11white
     tabindex="5" value=""></td>
<input type=hidden name=spprog value=66258>
<input type=hidden name=nriga value=1>
<!--campi hidden che arrivano dallo schedulatore NICIM tramite pgm
WMAG46NIC-->
<input type=hidden name=mach_nicim value="">
<input type=hidden name=seq_nicim value="">
<input type=hidden name=pezzi_nicim value="">
<input type=hidden name=prta_nicim value="">
<input type=hidden name=rif_nicim value="">
</tr>
<tr>
<td class=small9px align=left nowrap>190370&nbsp;RAP PRODUCTS INT cc-
ZA</td>
<td class=small9px align=left nowrap>&nbsp;</td>
<td class=small9px align=left nowrap>115998/1</td>
<td class=small9px align=left nowrap>Firm</td>
<td class=small9px align=left nowrap><font color=black>35</font></td>
<td class=small9px align=left nowrap>VEN&nbsp; 31/08/2007&nbsp;</td>
<td class=small9px align=left nowrap>801-RIR-12150AC</td>
<td class=small9px align=right nowrap>10.000</td>
<td class=small9px align=right nowrap><font color=red><b>10.000</b></
td>
<input type=hidden name=pezzidapro value=10000>
<td class=small9px><input type=text name=mach size=4 maxlength=4
readonly id='macch1' class=readonlybianco11px value=M328></td>
<td class=small9px><input type=text name=seq size=3 maxlength=3
id='seq1' onBlur=checkdupseq("2") tabindex="1" value=3></td>
<td class=small9px><input type=text name=pezzi size=6 maxlength=6
id='pezzi1' onChange=Ricalcola() tabindex="2" value=10000></td>
<td class=small9px><input type=text name=prta size=1 maxlength=1
id='prta1' tabindex="3" value=1></td>
<td class=small9px><input type=text name=rifni size=7 maxlength=6
readonly class="readonly" tabindex="4" value=></td>
<td class=small9px><input type=checkbox name=sel onClick=dosel("2")
value="2" checked></td>
<td class=small9px><input type=text name=comme size=40 maxlength=40
id='comme1' class=iform11white
     tabindex="5" value=""></td>
<input type=hidden name=spprog value=66308>
<input type=hidden name=nriga value=2>
<!--campi hidden che arrivano dallo schedulatore NICIM tramite pgm
WMAG46NIC-->
<input type=hidden name=mach_nicim value="">
<input type=hidden name=seq_nicim value="">
<input type=hidden name=pezzi_nicim value="">
<input type=hidden name=prta_nicim value="">
<input type=hidden name=rif_nicim value="">
</tr>
<tr>
<td class=small9px align=left nowrap>190370&nbsp;RAP PRODUCTS INT cc-
ZA</td>
<td class=small9px align=left nowrap>SCHIUMA V2</td>
<td class=small9px align=left nowrap>115924/1</td>
<td class=small9px align=left nowrap>Firm</td>
<td class=small9px align=left nowrap><font color=black>35</font></td>
<td class=small9px align=left nowrap>VEN&nbsp; 31/08/2007&nbsp;</td>
<td class=small9px align=left nowrap>805-GBB-11192</td>
<td class=small9px align=right nowrap>70.000</td>
<td class=small9px align=right nowrap><font color=red><b>7.500</b></
td>
<input type=hidden name=pezzidapro value=7500>
<td class=small9px><input type=text name=mach size=4 maxlength=4
readonly id='macch2' class=readonlybianco11px value=M328></td>
<td class=small9px><input type=text name=seq size=3 maxlength=3
id='seq2' onBlur=checkdupseq("3") tabindex="1" value=1></td>
<td class=small9px><input type=text name=pezzi size=6 maxlength=6
id='pezzi2' onChange=Ricalcola() tabindex="2" value=7500></td>
<td class=small9px><input type=text name=prta size=1 maxlength=1
id='prta2' tabindex="3" value=1></td>
<td class=small9px><input type=text name=rifni size=7 maxlength=6
readonly class="readonly" tabindex="4" value=></td>
<td class=small9px><input type=checkbox name=sel onClick=dosel("3")
value="3" checked></td>
<td class=small9px><input type=text name=comme size=40 maxlength=40
id='comme2' class=iform11white
     tabindex="5" value=""></td>
<input type=hidden name=spprog value=66196>
<input type=hidden name=nriga value=3>
<!--campi hidden che arrivano dallo schedulatore NICIM tramite pgm
WMAG46NIC-->
<input type=hidden name=mach_nicim value="">
<input type=hidden name=seq_nicim value="">
<input type=hidden name=pezzi_nicim value="">
<input type=hidden name=prta_nicim value="">
<input type=hidden name=rif_nicim value="">
</tr>
<tr>
<td class=small9px align=left nowrap>190398&nbsp;MCBRIDE S.A.-BE</td>
<td class=small9px align=left nowrap>SCHIUMA V2</td>
<td class=small9px align=left nowrap>116002/8</td>
<td class=small9px align=left nowrap>Firm</td>
<td class=small9px align=left nowrap><font color=black>35</font></td>
<td class=small9px align=left nowrap>VEN&nbsp; 31/08/2007&nbsp;</td>
<td class=small9px align=left nowrap>805-GHB-12192Q</td>
<td class=small9px align=right nowrap>12.000</td>
<td class=small9px align=right nowrap><font color=red><b>7.000</b></
td>
<input type=hidden name=pezzidapro value=7000>
<td class=small9px><input type=text name=mach size=4 maxlength=4
readonly id='macch3' class=readonlybianco11px value=M328></td>
<td class=small9px><input type=text name=seq size=3 maxlength=3
id='seq3' onBlur=checkdupseq("4") tabindex="1" value=2></td>
<td class=small9px><input type=text name=pezzi size=6 maxlength=6
id='pezzi3' onChange=Ricalcola() tabindex="2" value=7000></td>
<td class=small9px><input type=text name=prta size=1 maxlength=1
id='prta3' tabindex="3" value=1></td>
<td class=small9px><input type=text name=rifni size=7 maxlength=6
readonly class="readonly" tabindex="4" value=></td>
<td class=small9px><input type=checkbox name=sel onClick=dosel("4")
value="4" checked></td>
<td class=small9px><input type=text name=comme size=40 maxlength=40
id='comme3' class=iform11white
     tabindex="5" value=""></td>
<input type=hidden name=spprog value=66361>
<input type=hidden name=nriga value=4>
<!--campi hidden che arrivano dallo schedulatore NICIM tramite pgm
WMAG46NIC-->
<input type=hidden name=mach_nicim value="">
<input type=hidden name=seq_nicim value="">
<input type=hidden name=pezzi_nicim value="">
<input type=hidden name=prta_nicim value="">
<input type=hidden name=rif_nicim value="">
</tr>
<tr>
<td class=small9px align=left nowrap>190870&nbsp;CVP SAS-FR</td>
<td class=small9px align=left nowrap>CRC-ON/OFF</td>
<td class=small9px align=left nowrap>115949/1</td>
<td class=small9px align=left nowrap>Firm</td>
<td class=small9px align=left nowrap><font color=black>35</font></td>
<td class=small9px align=left nowrap>VEN&nbsp; 31/08/2007&nbsp;*</td>
<td class=small9px align=left nowrap>805-RR0R0-2045</td>
<td class=small9px align=right nowrap>12.000</td>
<td class=small9px align=right nowrap><font color=red><b>11.000</b></
td>
<input type=hidden name=pezzidapro value=11000>
<td class=small9px><input type=text name=mach size=4 maxlength=4
readonly id='macch4' class=readonlybianco11px value=M330></td>
<td class=small9px><input type=text name=seq size=3 maxlength=3
id='seq4' onBlur=checkdupseq("5") tabindex="1" value=2></td>
<td class=small9px><input type=text name=pezzi size=6 maxlength=6
id='pezzi4' onChange=Ricalcola() tabindex="2" value=11000></td>
<td class=small9px><input type=text name=prta size=1 maxlength=1
id='prta4' tabindex="3" value=1></td>
<td class=small9px><input type=text name=rifni size=7 maxlength=6
readonly class="readonly" tabindex="4" value=></td>
<td class=small9px><input type=checkbox name=sel onClick=dosel("5")
value="5" checked></td>
<td class=small9px><input type=text name=comme size=40 maxlength=40
id='comme4' class=iform11white
     tabindex="5" value=""></td>
<input type=hidden name=spprog value=66182>
<input type=hidden name=nriga value=5>
<!--campi hidden che arrivano dallo schedulatore NICIM tramite pgm
WMAG46NIC-->
<input type=hidden name=mach_nicim value="">
<input type=hidden name=seq_nicim value="">
<input type=hidden name=pezzi_nicim value="">
<input type=hidden name=prta_nicim value="">
<input type=hidden name=rif_nicim value="">
</tr>
<tr>
<td class=small9px align=left nowrap>190710&nbsp;NORDTEK IMEXCO KFT-
HU</td>
<td class=small9px align=left nowrap>CRC-ON/OFF</td>
<td class=small9px align=left nowrap>115975/1</td>
<td class=small9px align=left nowrap>Firm</td>
<td class=small9px align=left nowrap><font color=black>35</font></td>
<td class=small9px align=left nowrap>VEN&nbsp; 31/08/2007&nbsp;</td>
<td class=small9px align=left nowrap>805-RR0R0-2045</td>
<td class=small9px align=right nowrap>12.000</td>
<td class=small9px align=right nowrap><font color=red><b>12.000</b></
td>
<input type=hidden name=pezzidapro value=12000>
<td class=small9px><input type=text name=mach size=4 maxlength=4
readonly id='macch5' class=readonlybianco11px value=M330></td>
<td class=small9px><input type=text name=seq size=3 maxlength=3
id='seq5' onBlur=checkdupseq("6") tabindex="1" value=3></td>
<td class=small9px><input type=text name=pezzi size=6 maxlength=6
id='pezzi5' onChange=Ricalcola() tabindex="2" value=12000></td>
<td class=small9px><input type=text name=prta size=1 maxlength=1
id='prta5' tabindex="3" value=1></td>
<td class=small9px><input type=text name=rifni size=7 maxlength=6
readonly class="readonly" tabindex="4" value=></td>
<td class=small9px><input type=checkbox name=sel onClick=dosel("6")
value="6" checked></td>
<td class=small9px><input type=text name=comme size=40 maxlength=40
id='comme5' class=iform11white
     tabindex="5" value=""></td>
<input type=hidden name=spprog value=66257>
<input type=hidden name=nriga value=6>
<!--campi hidden che arrivano dallo schedulatore NICIM tramite pgm
WMAG46NIC-->
<input type=hidden name=mach_nicim value="">
<input type=hidden name=seq_nicim value="">
<input type=hidden name=pezzi_nicim value="">
<input type=hidden name=prta_nicim value="">
<input type=hidden name=rif_nicim value="">
</tr>
<tr>
<td class=small9px align=left nowrap>190639&nbsp;SA. BRUNEL CHIMIE
DERIVES-FR</td>
<td class=small9px align=left nowrap>CERE-DOWLEX</td>
<td class=small9px align=left nowrap>115813/5</td>
<td class=small9px align=left nowrap>Firm</td>
<td class=small9px align=left nowrap><font color=red>36</font></td>
<td class=small9px align=left nowrap>GIO&nbsp; 06/09/2007&nbsp;</td>
<td class=small9px align=left nowrap>80A-RA0J7-192</td>
<td class=small9px align=right nowrap>12.000</td>
<td class=small9px align=right nowrap><font color=red><b>7.500</b></
td>
<input type=hidden name=pezzidapro value=7500>
<td class=small9px><input type=text name=mach size=4 maxlength=4
readonly id='macch6' class=readonlybianco11px value=M330></td>
<td class=small9px><input type=text name=seq size=3 maxlength=3
id='seq6' onBlur=checkdupseq("7") tabindex="1" value=4></td>
<td class=small9px><input type=text name=pezzi size=6 maxlength=6
id='pezzi6' onChange=Ricalcola() tabindex="2" value=7500></td>
<td class=small9px><input type=text name=prta size=1 maxlength=1
id='prta6' tabindex="3" value=1></td>
<td class=small9px><input type=text name=rifni size=7 maxlength=6
readonly class="readonly" tabindex="4" value=></td>
<td class=small9px><input type=checkbox name=sel onClick=dosel("7")
value="7" checked></td>
<td class=small9px><input type=text name=comme size=40 maxlength=40
id='comme6' class=iform11white
     tabindex="5" value=""></td>
<input type=hidden name=spprog value=65933>
<input type=hidden name=nriga value=7>
<!--campi hidden che arrivano dallo schedulatore NICIM tramite pgm
WMAG46NIC-->
<input type=hidden name=mach_nicim value="">
<input type=hidden name=seq_nicim value="">
<input type=hidden name=pezzi_nicim value="">
<input type=hidden name=prta_nicim value="">
<input type=hidden name=rif_nicim value="">
</tr>
<tr>
<td class=small9px align=left nowrap>190639&nbsp;SA. BRUNEL CHIMIE
DERIVES-FR</td>
<td class=small9px align=left nowrap>&nbsp;</td>
<td class=small9px align=left nowrap>115813/1</td>
<td class=small9px align=left nowrap>Firm</td>
<td class=small9px align=left nowrap><font color=red>36</font></td>
<td class=small9px align=left nowrap>GIO&nbsp; 06/09/2007&nbsp;</td>
<td class=small9px align=left nowrap>801-RBI-12192</td>
<td class=small9px align=right nowrap>60.000</td>
<td class=small9px align=right nowrap><font color=red><b>56.500</b></
td>
<input type=hidden name=pezzidapro value=56500>
<td class=small9px><input type=text name=mach size=4 maxlength=4
readonly id='macch7' class=readonlybianco11px value=M330></td>
<td class=small9px><input type=text name=seq size=3 maxlength=3
id='seq7' onBlur=checkdupseq("8") tabindex="1" value=5></td>
<td class=small9px><input type=text name=pezzi size=6 maxlength=6
id='pezzi7' onChange=Ricalcola() tabindex="2" value=56500></td>
<td class=small9px><input type=text name=prta size=1 maxlength=1
id='prta7' tabindex="3" value=1></td>
<td class=small9px><input type=text name=rifni size=7 maxlength=6
readonly class="readonly" tabindex="4" value=></td>
<td class=small9px><input type=checkbox name=sel onClick=dosel("8")
value="8" checked></td>
<td class=small9px><input type=text name=comme size=40 maxlength=40
id='comme7' class=iform11white
     tabindex="5" value=""></td>
<input type=hidden name=spprog value=65926>
<input type=hidden name=nriga value=8>
<!--campi hidden che arrivano dallo schedulatore NICIM tramite pgm
WMAG46NIC-->
<input type=hidden name=mach_nicim value="">
<input type=hidden name=seq_nicim value="">
<input type=hidden name=pezzi_nicim value="">
<input type=hidden name=prta_nicim value="">
<input type=hidden name=rif_nicim value="">
</tr>
</table>
<!--FINE FORM1------>
</form>

 GRAZIE A TUTTI IN ANTICIPO.
ascolta se vuoi avere qualche speranza, metti on line da qualche parte il
tuo lavoro, ben formattato da poter leggere un po' meglio il codice...
cmq da quello che ho vosto, fai dei cicli importanti (1000) evocando più
volte inutilmente il riferimento dello stesso oggetto a ciclo
document.getElementById('orelibere').style.font...
document.getElementById('orelibere').style.border...
document.getElementById('orelibere').style....
salvati il riferimento in una variabile temporanea e riusa quello:
obj = document.getElementById('orelibere');
obj.style.font...
obj.style.border...
obj.style....
questo dovrebbe velocizzare 
poi ci saranno altre n cose, ma con il codice nello stato attuale mi
rifiuto di prendere in considerazioni altri miei interventi :)

 il campo pezzi turno effettivi senza andare sul database-->
Mhm. Magari potrebbe esserti utile l'XmlHttpRequest ("AJAX"...)
-- 
~ "Uccidere è proibito, quindi tutti gli assassini vengono puniti,
a meno che non uccidano su larga scala e al suono delle trombe."
(Voltaire)

 obj.style....
E salvarsi direttamente lo style, pareva brutto? ;) Scherzi a parte, č
meglio impostare direttamente una classe in casi come questi, direi.
-- 
~ Always remember you're unique, just like everyone else.

 ~ Always remember you're unique, just like everyone else.
Se volete, potete trovare il file html su:
www.xbinary.com
password:
enricoamisano*gualadispensing
Non era mia intenzione di fare un programma multibrowser.
Uso Firefox solo per test e meno male che esiste.

 Uso Firefox solo per test e meno male che esiste.
Aspetta, fammi capire. Il "programma" deve girare solo su IE ma l'hai
sviluppato su Firefox..?
-- 
~ "E' uno sterminio.. Non č una guerra piů di quanto lo potrebbe
essere tra un uomo e un verme... O tra draghi e lupi..
O tra uomini a cavallo di draghi che lanciano lupi ai vermi!"

 sviluppato su Firefox..?
Il programma deve girare solo su IE.
Quando però ho dei problemi su IE utilizzo Firefox per vedere se va
meglio e per testarlo.
Di solito il 90% delle volte FF funziona meglio come in questo caso.
Inoltre se ci sono degli errori su browser che IE mi spiega in malo
modo uso FF per capirci di più.
Ciao

 meglio e per testarlo.
E fin qui è comprensibile.
Ma una pratica del genere non porta a sviluppare 2 mesi su FF, prima
di accorgersi che su IE non va altrettanto bene. Il browser primario
dovrebbe essere quello su cui andrà a girare l'applicazione.
Del resto sono due programmi differenti, con proprie peculiarità. Vi
sono notevoli differenze tra i due, a livello implementativo.
L'esempio classico, può essere la concatenazione di stringhe.
-- 
~ Plagiarism is copying from one source;
research is copying from two or more
(Wilson Mizner)

 meglio impostare direttamente una classe in casi come questi, direi.
cioe' un qualcosa in cui salveresti tutti i riferimenti man a mano che li
incontri per poi riutilizzarli al momento opportuno?

 incontri per poi riutilizzarli al momento opportuno?
Mhm? Non ti seguo. Intendevo una classe CSS, così come ho spiegato nel
mio post. Dato che i valori sono sempre gli stessi e quindi statici, è
più sensato creare una classe CSS e impostare quella. Invece di:
	obj.style.font = "...";
	obj.style.border = "...",
	obj.style.background = "...";
Avere:
	<style type="text/css">
		.laMiaBellaClasse{
			font		: ...;
			border		: ...;
			background	: ...;
		}
	</style
E da JS fare semplicemente:
	obj.className = "laMiaBellaClasse";
E' anche, decisamente, più manutenibile.
-- 
~ Una volta, qui, era tutto <TABLE>.

 incontri per poi riutilizzarli al momento opportuno?
Mhm? Non ti seguo. Intendevo una classe CSS, così come ho spiegato nel
mio post. Dato che i valori sono sempre gli stessi e quindi statici, è
più sensato creare una classe CSS e impostare quella. Invece di:
	obj.style.font = "...";
	obj.style.border = "...";


 E' anche, decisamente, piů manutenibile.
e in piu' separa le cariere, dev. e des.  ;)