nella casella di INPUT :
OnBlur = "somma(riga=this.id,valore=this.value)"
..........................................
nella casella di INPUT :
OnBlur = "somma(riga=this.id,valore=this.value)"
..........................................
Quel codice sembra sbagliato, ma non ne sono sicuro e non saprei come correggerlo.
Cosa fa la funzione somma() ?
Che parametri occorre passare?
Perche` passi l'id del campo?
Dentro i parametri non ci vanno i segni uguale, o almeno dovrebbero esser racchiusi dentro una stringa.
In poche parole: cosa vuoi fare?
Ciao
Michele
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Allora io devo passare l'id perkè poi dovrò sommare la riga che contiene quegli ID.
Mi spiego meglio io ho 9 righe per 31 giorni(o 30 o 29 a seconda del mese).
Le celle vanno da 1 a "31"*9 (quindi da 1 a 279), se sono nella cella 15 do un valore spingo il tasto backspace, in quel momento catturo il valore e lo vado a sommare a tutti valori delle altre celle che appartengono a quella riga, quindi nel caso specifico da 1 a 31.
Se fosse nella cella 103, sommerei i valori dei txt da 94 a 125.
Il valore che esce da questa somma finirà in un ID con som+numriga nell'ultima colonna.
Mi pare di capire che hai "ereditato" (o in qualche modo acquisito) uno script funzionante, e lo vuoi modificare.
Tale script non e` banale, neppure per qualcuno con esperienza.
Ora e` molto difficile dare consigli in una situazione come questa, specie se mancano una serie di informazioni.
Come minimo serve sapere quali sono i parametri in ingresso delle funzioni interessate (quello che chiedevo prima con le prime due domande: cosa fa la funzine somma() e/o quali parametri occorre passare).
Ciao
Michele
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
No purtroppo non ho ereditato nulla ma sto semplicemente costruendo il mio script a livello concettuale sperando che qualcuno me lo traduca in js.
Ti spiego la funzione somma
funzione somma (id e value di una casella di input)
{
verifico l'id di provenienza.
esamino i "value" degli id che mi interessano e li sommo
in una variabile che chiamo som.
terminata la sommatoria , la scrivo nel div con id pre impostato
che non rappresenta un input
}
Mi spiace. Non riesco a ragionare sulle parole.
Gia` faccio fatica a ragionare sugli script funzionanti.
Capisco che dietro alle tue richieste c'e` un ragionamento, e che tale ragionamento potrebbe avere un fondamento corretto, ma ho troppo poca conoscenza del problema per poterti aiutare.
Io chiamerei le celle con una lettera e un numero:
cellaA01 cellaA02 cellaA03 ... cellaA31
cellaB01 cellaB02 cellaB03 ... cellaB28
cellaC01 ...
e poi farei le somme passando i parametri opportuni (in questo caso A o B, ..)
Comunque i totali dovrebbero essere delle celle di input (che io chiamerei cellaAT, cellaBT, ..), altrimenti ti cacci nei guai prima di iniziare.
Ciao
Michele
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Salve a tutti,
come alsolito Mich_ ha ragione :metallica
gli input sarebbero andati meglio scrivendo una lettere per le righe e un numero per le colonne![]()
visto che è così però....
per fare la somma della riga
homesso on-line la mia prova (dove si vede tutto il codice) per vedere il funzionamento.codice:function Somma(tt){ numero = parseInt(tt.id.substr(prefisso.length))-1 da = 1+(numero-(numero%31)) somma=0 for(i=da;i<da+31;i++) somma+=parseFloat(tt.form.elements[prefisso+i].value) document.getElementById('totale'+((da-1)/31+1)).innerHTML=somma }
Famme sape'
![]()
Questo è il codice di una delle righe che creo :
echo "<tr>";
echo "<td>$MinFont Ord</td>";
$giorni = 0;
$indice_colori = 0;
while ($giorni < $mesi[$mese])
{
$giorni++;
$Giorno = date("D", mktime(0,0,0,$mese,$giorni,$anno));
if (Trim($Giorno) == "Sun")
{
$color = "#ff3300";
}
else
{
$color = "#0000FF";
if (Trim($Giorno) == "Mon")
{
$indice_colori++;
}
}
echo "<td align = \"center\" rowspan = \"1\" bgcolor = \"$col_set[$indice_colori]\">";
if ($Elaborato == "N")
{
echo "<input type = \"Text\" Name = \"OrOr[$giorni]\" id = \"txt".$pos."\" Value = \"".CntPDF($VetOre[$giorni][0],$False,"")."\" Size = \"3\" MAXLENGTH = \"4\"
onchange=\"Solonumeri(this);Somma(this)\" onfocus = \"pos=this.id;cc=this.createTextRange();cc.execCom mand('SelectAll');\" style=\"background=$col_set[$indice_colori];color=$color;\">";
}
else
{
echo $MinFont.$VetOre[$giorni][0];
}
echo "</td>";
$pos++;
}
echo "<td align = \"center\"><div id=\"totale1\">0</div></td>";
echo "</tr>";
?>
Questo è il file che contiene gli script :
# mng_key.PHP
# -------------------------
# $Mese_Numero --> Numero giorni * mese
$Totale_celle = $Mese_Numero * 9;
$PenRig_celle = $Totale_celle - $Mese_Numero;
$SecRig_Start = $Mese_Numero + 1;
$SecRig_End = $Mese_Numero * 2;
$QuaRig_Start = ($Mese_Numero * 3) + 1;
$QuaRig_End = $Mese_Numero * 4;
?>
<script language="javascript">
var isNav=false
if (parseInt(navigator.appVersion)>=4){
if(navigator.appName == "Netscape"){
window.captureEvents(Event.ONKEYPRESS)
window.onkeypress = prova
isNav = true
}
else
document.onkeydown = prova
}
var pos=null
var prefisso='txt'
function prova(e){
if(pos!=null){
num = parseInt(pos.substr(prefisso.length))
if(isNav){
if (e.keyCode == 34) {
if(num<<? echo $PenRig_celle ?>) num=num+<? echo $Mese_Numero."\n"?>
else num=num+<? echo $Mese_Numero?>-<? echo $Totale_celle."\n" ?>
}
if (e.keyCode == 33) {
if(num><? echo $Mese_Numero?>)num=num-<? echo $Mese_Numero."\n" ?>
else num=num-<? echo $Mese_Numero?>+<? echo $Totale_celle."\n" ?>
}
}
if (window.event.keyCode == 34) {
if(num<<? echo $PenRig_celle ?>)num=num+<? echo $Mese_Numero."\n"?>
else num=num+<? echo $Mese_Numero?>-<? echo $Totale_celle."\n" ?>
}
if (window.event.keyCode == 33) {
if(num><? echo $Mese_Numero?>)num=num-<? echo $Mese_Numero."\n"?>
else num=num-<? echo $Mese_Numero?>+<? echo $Totale_celle."\n"?>
}
pos = prefisso+num
document.forms[0].elements[pos].focus()
}
if (pos!=null){
num = parseInt(pos.substr(prefisso.length))
if(isNav){
if ( (e.keyCode == 120) && ( ( (num >= <? echo $SecRig_Start ?>) && (num <= <? echo $SecRig_End ?>) ) || ( (num >= <? echo $QuaRig_Start ?>) && (num <= <? echo $QuaRig_End ?>) ) ) ) {
openWindow2('../causali.php?Form=<?echo $Form; ?>&Msg='+pos+'&dati=<? echo $dati; ?>')
}
}
if ( (window.event.keyCode == 120) && ( ( (num >= <? echo $SecRig_Start ?>) && (num <= <? echo $SecRig_End ?>) ) || ( (num >= <? echo $QuaRig_Start ?>) && (num <= <? echo $QuaRig_End ?>) ) ) ) {
openWindow2('../causali.php?Form=<?echo $Form; ?>&Msg='+pos+'&dati=<? echo $dati; ?>')
}
}
}
function Solonumeri(tt){
tt.value=tt.value.replace(/,/g,'.')
RE=/\d*\.?\d*/
valore = parseFloat(tt.value.match(RE))
if(isNaN(valore))valore=0
tt.value = valore
}
function Somma(tt){
numero = parseInt(tt.id.substr(prefisso.length))-1
da = 1+(numero-(numero%31))
somma=0
for(i=da;i<da+31;i++)
somma+=parseFloat(tt.form.elements[prefisso+i].value)
document.getElementById('totale'+((da-1)/31+1)).innerHTML=somma
}
</script>
e tradotto in HTML? Non conosco molto bene il php![]()
funzia?
NO!
Non mi fa i totali.
Cmq se tu hai il codice in asp postalo, vediamo cosa posso fare.
Non mi intendo di asp, ma a senso posso valutare l'html non aiuta.