Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    azzeramento perpetuo variabili globali

    salve a tutti
    quasi mi vergogno di chiedere aiuto perchè è una domanda tanto banale quanto sicuramente di facile soluzione
    inizio ora ad affacciarmi a javascript, con anni alle spalle di vb e un paio di asp
    debbo risolvere questo problema
    ho una tabella con bg bianco: debbo cliccarci sopra e il colore della riga deve cambiare... e fin qui tutto ok.
    quando premo su un'altra riga, la riga nuova deve cambiare colore anch'essa ma quella "vecchia", cioè quella che prima era colorata, deve ridiventare bianca.
    per risolvere ho creato due variabili (globali) OLD_X e OLD_Y che contengono, di volta in volta, le coordinate della cella precedentemente colorata.
    codice:
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>prova click</title>
    
    
    <script type="text/javascript">
    function variabili() {
         old_y = 0;
         old_x = 0;
         alert("azzera_y  " + old_y + "        azzera_x  " + old_x);
    }
    </SCRIPT>
    
    
    <script type="text/javascript">
    function cambiarFondo_mio(y,x,old_y,old_x) {
    
        var old_x=old_x
        var old_y=old_y
        alert("sbianchetto il " + old_y + "," + old_x );
    
        document.getElementById('tav_1').rows[old_y].cells[old_x].bgColor='#FFFFFF';
        document.getElementById('tav_1').rows[old_y].cells[old_x + 1].bgColor='#FFFFFF';
    
        
        document.getElementById('tav_1').rows[y].cells[x].bgColor='#CC66FF';
        document.getElementById('tav_1').rows[y].cells[x + 1].bgColor='#CC66FF';
        old_x=x
        old_y=y
        
        alert("mi trovo in " + y  + "," + x + "            il prossimo sbianchettamento avverrà in " + old_y + "," + old_x );
        
    }
    
    </SCRIPT>
    
    <script language="JavaScript">
    variabili();
    </script>
    
    
    </head>
    
    <body>
    
    
    
    <table border="1" width="20%" id="tav_1" height="187">
    
    	<tr onclick=cambiarFondo_mio(0,0,old_y,old_x)>
    		<td width="42" height="61">0</td>
    		<td height="61">pizza margherita</td>
    	</tr>
    	
    	<tr onclick=cambiarFondo_mio(1,0,old_y,old_x)>
    		<td width="42">0</td>
    		<td>spina piccola</td>
    	</tr>
    	
    	<tr onclick=cambiarFondo_mio(2,0,old_y,old_x)>
    		<td width="42">0</td>
    		<td>calzone pomodoro</td>
            </tr>
    </table>
    
    </body>
    
    </html>
    ebbene : non mi funziona in quanto 'ste benedette variabili mi si azzerano sempre.
    abituato a vb e ad asp, nei quali basta definirle all'inizio ed amen, qui mi trovo all'impasse :-(
    debbo utilizzare un qualcosa lato-client in quanto non posso, ad ogni click, far ricaricare la pagina solo per dire che quella riga è evidenziata .
    la applicazione è in wifi e quindi mi occorre una cosa che lavori sul tablettino sulla quale gira, chiamando il meno possibile la pagina html che produce l'effetto .
    spero di essere stato chiaro
    grazie a chi potrà essermi di aiuto

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Se le variabili sono globali le devi definire all'esterno della funzione e non serve passarle come parametri
    codice:
    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>prova click</title>
    
    <script type="text/javascript">
        var old_x
        var old_y
    
    function variabili() {
         old_y = 0;
         old_x = 0;
         alert("azzera_y  " + old_y + "        azzera_x  " + old_x);
    }
    
    function cambiarFondo_mio(y,x) {
    
        alert("sbianchetto il " + old_y + "," + old_x );
    
        document.getElementById('tav_1').rows[old_y].cells[old_x].bgColor='#FFFFFF';
        document.getElementById('tav_1').rows[old_y].cells[old_x + 1].bgColor='#FFFFFF';
    
        
        document.getElementById('tav_1').rows[y].cells[x].bgColor='#CC66FF';
        document.getElementById('tav_1').rows[y].cells[x + 1].bgColor='#CC66FF';
        old_x=x
        old_y=y
        
        alert("mi trovo in " + y  + "," + x + "            il prossimo sbianchettamento avverrà in " + old_y + "," + old_x );
        
    }
    
    variabili();
    
    </script>
    
    </head>
    
    <body>
    
    <table border="1" width="20%" id="tav_1" height="187">
    
    	<tr onclick=cambiarFondo_mio(0,0)>
    		<td width="42" height="61">0</td>
    		<td height="61">pizza margherita</td>
    	</tr>
    	
    	<tr onclick=cambiarFondo_mio(1,0)>
    		<td width="42">0</td>
    		<td>spina piccola</td>
    	</tr>
    	
    	<tr onclick=cambiarFondo_mio(2,0)>
    		<td width="42">0</td>
    		<td>calzone pomodoro</td>
            </tr>
    </table>
    </body>
    </html>
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    grazie infinite
    il fatto è che debbo ancora entrare nella mentalità di javascript. A questo si somma il fatto che aggiornare a 52 anni le proprie basi di cultura informatica risulta un pò difficile :-)

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da bellopapo
    grazie infinite
    il fatto è che debbo ancora entrare nella mentalità di javascript. A questo si somma il fatto che aggiornare a 52 anni le proprie basi di cultura informatica risulta un pò difficile :-)
    Allora ne riparliamo fra 5 anni
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.